将文件名的前4个字符存储到变量中

时间:2013-03-20 20:42:39

标签: bash

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

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

2 个答案:

答案 0 :(得分:5)

来自http://tldp.org/LDP/abs/html/string-manipulation.html

  

子串提取

     

${string:position}   从$ position的$ string中提取子字符串。

     

如果$ string参数是“*”或“@”,那么这将从$ position开始提取位置参数[1]。

     

${string:position:length}   从$ position的$ string中提取子字符串的$ length字符。

示例

shortName=${f:0:4}

玩得开心!

答案 1 :(得分:4)

你可以使用纯粹的bash方式:

${parameter:offset:length}

即。得到$HOME变量的第一个字符:

echo ${HOME:0:4}

btw你的脚本也有问题(从不解析ls输出)。它应该是这样的:

for f in ./src/*
do
    echo $f
    cd tmp
    f="../src/$f"
    first4=${f:0:4}
    sh "$f"
done