2

以下代码是我正在编写的脚本的一部分。现在,为了这个脚本的目的,我假设 ./src 中只有 1 个文件,所以这个循环应该只执行一次。现在,在某处的循环中,我想获取 $f (文件名)的前 4 个字符并将其存储在另一个变量中。我知道有 cut 命令,但我不确定是否或如何在这里使用它,因为我认为 cut 用于文件的内容,而不是文件本身。

for f in `ls ./src`
do
    echo $f
    cd tmp
    f="../src/$f"
    sh "$f"
done
4

2 回答 2

7

来自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}

玩得开心!

于 2013-03-20T20:48:30.027 回答
5

您可以使用纯 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
于 2013-03-20T20:46:55.147 回答