昨日私は非常に簡単な作業をしましたが、いいコードではできないような気がします。グローバル変数を持つシェルスクリプト関数
この作業は簡単です:私はインストーラスクリプトの中でwhiptail "interactive"モードで質問したい多くのパラメータを持っています。
コードの詳細:
#!/bin/bash
address="192.168.0.1" # default address, what the user can modify
addressT="" # temporary variable, that I want to check and modify, thats why I don't modify in the function the original variable
port="1234"
portT=""
... #there is a lot of other variable that I need for the installer
function parameter_set {
$1=$(whiptail --title "Installer" --inputbox "$2" 12 60 "$3" 3>&1 1>&2 2>&3) # thats the line 38
}
parameter_set "addressT" "Please enter IP address!" "$address"
parameter_set "portT" "Please enter PORT!" "$port"
が、私は次のエラーました:
"./install.sh: line: 38: address=127.0.0.1: command not found"
私は別の変数(ない関数のパラメータ)を変更する場合には、うまく動作します。
function parameter_set {
foobar=$(whiptail --title "Installer" --inputbox "$2" 12 60 "$3" 3>&1 1>&2 2>&3)
echo $foobar
}
私はグローバル変数RETVALを使用しようとすると、元の変数に関数の外に割り当て、それは動作しますが、私はそれがこの仕事のために素敵な解決策ではないと思います。
私はそれが間違って何を手伝ってくれますか? :)
事前のおかげで(と私の悪い英語のため申し訳ありません...)、 アッティラ
リダイレクトのため、whiptailコマンドが出力を生成していないようです。したがって、コマンドの置き換えは値を空のままにします。削除してください。また、新しい値をローカル変数に保存する方が良いでしょう。 –