logo

bash で – $VARIABLE を設定します

bash スクリプトの世界では、set – $VARIABLE というフレーズに遭遇することがあります。しかし、それは何を意味するのでしょうか?

最も基本的な set – $VARIABLE は、区切り文字として内部フィールド区切り文字 (IFS) を使用して、bash 変数の値を個別の単語に分割するために使用されます。たとえば、VARIABLE の値が a b c の場合、set – $VARIABLE を実行すると、位置パラメータが a、b、c に設定されます。



ハッシュマップの内部動作

これは一見すると特に便利ではないように見えますが、適切な状況で使用すると強力なツールになります。一般的な使用例の 1 つは、bash スクリプトに渡されるコマンドライン引数を処理することです。 bash スクリプトを実行するとき、位置パラメータ (、 など) はスクリプトに渡される引数を表します。 set – $VARIABLE を使用すると、1 つの引数を複数の単語に簡単に分割でき、より簡単に処理できるようになります。

これがどのように使用されるかの例を次に示します。

#!/bin/bash # Set the value of VARIABLE to the first command-line argument VARIABLE='' # Split the value of VARIABLE into separate words set - $VARIABLE # Loop over the words for word in '$@'; do echo '$word' done>

このスクリプトを次のように保存すると、 example.sh を開き、次のように実行します。

./example.sh 'a b c'>

出力:



a b c>

変数に格納されたリストの要素をループします。

set – $VARIABLE のもう 1 つの一般的な使用例は、変数に格納されているリストの要素をループすることです。例えば:

C++で順序付けされていないマップ
# Set the value of VARIABLE to 'a b c' VARIABLE='a b c' # Split the value of VARIABLE into separate words set - $VARIABLE # Loop over the words for word in '$@'; do echo '$word' done>

出力:

a b c>

set – $VARIABLE は、VARIABLE の値が単一の文字列である場合にのみ機能することに注意してください。 VARIABLE が配列の場合は、別のアプローチを使用する必要があります。 1 つのオプションは、printf ‘%s ’ ${VARIABLE[@]} 構文を使用することです。これは、配列を一連の個別の単語に展開し、各単語を改行文字で区切ります。



これがどのように使用されるかの例を次に示します。

#!/bin/bash # Set the value of VARIABLE to an array containing 'a', 'b', and 'c' VARIABLE=('a' 'b' 'c') # Expand the array into a series of separate words set - $(printf '%s
' '${VARIABLE[@]}') # Loop over the words for word in '$@'; do echo '$word' done>

出力:

a b c>

結論

結論として、set – $VARIABLE は、IFS を区切り文字として使用して、変数の値を個別の単語に分割できる便利な bash 機能です。コマンドライン引数を処理したり、変数に格納されたリストの要素をループしたりするために使用できます。これは単一の文字列に対してのみ機能しますが、配列に対して使用できる代替アプローチもあります。 set – $VARIABLE がどのように機能するのか、またいつ使用するのかを理解することは、bash スクリプト ツールキットに有益な追加となる可能性があります。