- 657 名前:デフォルトの名無しさん mailto:sage [2018/11/17(土) 01:07:52.12 ID:LhPQgZnG0.net]
- >>651
変数を使わないの書き方の基本の一つは引数(パラメータ)を使うことだよ 引数を変数の代わりとして使う。そのやり方に2パターンある ・パターン1 関数を作る(呼び出し先の関数の引数にする) foo() { case "$1" in 'A'|'aaa') echo 'B' ;; *) echo "$1" ;; esac } foo "$(<なにかの処理>)" ・パターン2 引数を再設定する(自分自身の引数にする) set -- "$(<なにかの処理>)" case "$1" in 'A'|'aaa') echo 'B' ;; *) echo "$1" ;; esac パターン2はこのままだと自分自身の引数がなくなってしまうが、 set -- "$(<なにかの処理>)" "$@" とすることで、残しておくことが可能。以降は引数の番号をずらして 扱うかshiftで元に戻すなりするか、引数の個数が固定なら、 set -- "$@" "$(<なにかの処理>)" と逆にしてもよい 余談だが、そんなコードを書くぐらいなら素直に変数を使えばいいと思うかもしれないが、 シェルスクリプトの変数がグローバル変数なのに対して、 引数は(レキシカルスコープ的な)ローカル変数になってるという重要な違いがある localやtypesetを使った変数のローカル化はダイナミックスコープなのでそれとも違う
|

|