以下代码是我正在编写的脚本的一部分。现在,为了这个脚本的目的,我假设 ./src 中只有 1 个文件,所以这个循环应该只执行一次。现在,在某处的循环中,我想获取 $f (文件名)的前 4 个字符并将其存储在另一个变量中。我知道有 cut 命令,但我不确定是否或如何在这里使用它,因为我认为 cut 用于文件的内容,而不是文件本身。
for f in `ls ./src`
do
echo $f
cd tmp
f="../src/$f"
sh "$f"
done
以下代码是我正在编写的脚本的一部分。现在,为了这个脚本的目的,我假设 ./src 中只有 1 个文件,所以这个循环应该只执行一次。现在,在某处的循环中,我想获取 $f (文件名)的前 4 个字符并将其存储在另一个变量中。我知道有 cut 命令,但我不确定是否或如何在这里使用它,因为我认为 cut 用于文件的内容,而不是文件本身。
for f in `ls ./src`
do
echo $f
cd tmp
f="../src/$f"
sh "$f"
done
来自http://tldp.org/LDP/abs/html/string-manipulation.html
子串提取
${string:position}
在 $position 处从 $string 中提取子字符串。如果 $string 参数是“*”或“@”,那么这会提取位置参数,[1] 从 $position 开始。
${string:position:length}
从 $position 的 $string 中提取 $length 个子字符串的字符。
例子
shortName=${f:0:4}
玩得开心!
您可以使用纯 bash 方式:
${parameter:offset:length}
即获取$HOME
变量的第一个字符:
echo ${HOME:0:4}
顺便说一句,您的脚本也有问题(从不解析 ls 输出)。它应该是这样的:
for f in ./src/*
do
echo $f
cd tmp
f="../src/$f"
first4=${f:0:4}
sh "$f"
done