5

シェル環境ではdash、文字列を配列に分割しようとしています。次のコードは では機能しますが、 では機能しbashませんdash

IFS=""
var="this is a test|second test|the quick brown fox jumped over the lazy dog"
IFS="|"
test=( $var )
echo ${test[0]}
echo ${test[1]}
echo ${test[2]}

私の質問

このスタイルdashで配列をサポートします。そうでない場合、ループを使用せずにこれを別のタイプの変数に解析するための提案はありますか?

4

1 に答える 1

16

dashアレイをサポートしていません。あなたはこのようなことを試すことができます:

var="this is a test|second test|the quick brown fox jumped over the lazy dog"
oldIFS=$IFS
IFS="|"
set -- $var
echo "$1"
echo "$2"
echo "$3"      # Note: if more than $9 you need curly braces e.g. "${10}"
IFS=$oldIFS

注:変数展開は引用符で囲まれていないため、垂直バーに設定された$varに従ってフィールドに分割されます。IFSこれらのフィールドはsetコマンドのパラメーターになり、その結果$1 $2などに求められる値が含まれます。

--(オプションの終わり)は、変数展開の結果がsetコマンドのオプションとして解釈されないようにするために使用されます。

于 2013-02-21T14:28:19.440 に答える