だから私は空の文字列変数を最初の引数として受け取り、2番目の引数として文字を受け取るbashにこの関数を持っています。
function check_cases {
case $2 in
r) $1=$(echo "$1 Read");;
w) $1=$(echo "$1 Write");;
x) $1=$(echo "$1 Execution");;
esac
}
文字列変数を連結するさまざまな方法を試しましたが、常に次のように表示されます。
=: command not found
=演算子について。関数内にローカル文字列変数を作成して消去します。
local var=""
文字変数として渡します。
check_cases "$var" "$char"
現在の状況とこの問題を解決する方法を知りたいです。
ベストアンサー1
何かしようとしているようです。参照として渡すタイプ機能。
これは実際にはスクリプトには適していませんbash
。私たちはできる徐々に進むコマンドで動作しますeval
が、危険な動作(文字列に含まれるコマンドの評価)が多いため、お勧めできません。
存在するこれたとえば、コードは次のようになります。
function check_cases {
case $2 in
r) eval $1=\"\$$1 Read\" ;;
w) eval $1=\"\$$1 Write\" ;;
x) eval $1=\"\$$1 Execution\" ;;
esac
}
check_cases var r
check_cases var w
check_cases var x
echo $var
代わりに、一般的に使用する方が良いです。値として渡す意味論: 必要な値を返し、呼び出し側に変数を追加します。
例えば
function check_cases {
case $1 in
r) echo " Read" ;;
w) echo " Write" ;;
x) echo " Execution" ;;
esac
}
var="$var$(check_cases r)"
var="$var$(check_cases w)"
var="$var$(check_cases x)"
echo $var