1

動的な値を変数に割り当てるにはどうすればよいですか?私が知っている最も簡単な方法は、関数を使用することです。例えば

fn(){
    VAR=$VAL
}
VAL=value
fn
echo $VAR

出力します

value

でももっとシンプルなものが欲しい

VAR=$VAL
VAL=value
echo $VAR

出力する

value

どのコマンドを使用すればよいですか?ダッシュと互換性があることが望ましい。

ありがとう!

更新:ダッシュに関連して#!/ bin/shを削除しました。説明してくれた「IgnacioVazquez-Abrams」に感謝します!

更新2:状況をよりよく理解するためにスクリプトのソースを追加します。

INPUT=`dpkg -l|grep ^rc|cut -d' ' -f3`
filter(){
    echo *$A*
}
for A in $INPUT;do find ~ -iname `filter`|grep ^$HOME/\\.|grep -iz --color $A;done

このスクリプトは、削除されたパッケージの残りの構成ファイルを見つけるのに役立ちます。

4

3 に答える 3

2

関数が良くない場合は、eval を呼び出しても問題ないでしょうか?

export VAR='echo $VAL'
VAL=10
eval $VAR

これは表示されます

10
于 2012-10-17T22:36:00.657 に答える
0

値を設定する単純な関数はどうですか?

# export is needed so f() can use it.
export VAR

f() {
    VAR=$@
}

f 10
echo $VAR
f 20
echo $VAR

上記のコードは次のように表示されます。

10
20
于 2012-10-17T22:20:31.773 に答える
0

私があなたのニーズを理解したら、indirectionが必要なので、次のシェル コードを試してください ( でテスト済みdash) :

var=foo
x=var
eval $x=another_value
echo $var

出力:

another_value

最後に:

を変更する必要があるたびにvar、実行する必要がありますeval $x=foobar

于 2012-10-17T22:20:41.053 に答える