2

この次のコードは、私が書いているスクリプトの一部です。ここで、このスクリプトでは、./src にファイルが 1 つしかないことを想定しているため、このループは 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} $string から $position の部分文字列を抽出します。

$string パラメータが "*" または "@" の場合、$position から [1] の位置パラメータが抽出されます。

${string:position:length} $string から $position の部分文字列の $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 に答える