私は別名を持っている:私は、変数を宣言することができ、かつ唯一取得するbuiltin local
を使用した私の修正宣言機能、に地元のコマンドをリダイレクトするために使用したいは条件付きバッシュの別名で中止
alias local='if [ -z "${FUNCNAME[0]}" ]; then builtin local; fi; declare'
関数の外部にある場合はエラーメッセージ。
エイリアスが(-xセット使用)の出力を持っています
+ '[' -z '' ']'
+ builtin local
-bash: local: can only be used in a function
+ declare
今のところは、とにかくdeclare
を実行し、私はチェックが失敗した場合、それを終了したいと思います。私はこのための関数を使用することはできません。
これまでのところ、私が試したリターン、休憩して終了(出口はないここでは明白な理由):
alias 'local=if [ -z "${FUNCNAME[0]}" ]; then builtin local; return 1; break; fi; declare'
+ '[' -z '' ']'
+ builtin local
-bash: local: can only be used in a function
+ return 1
-bash: return: can only `return' from a function or sourced script
+ break
-bash: break: only meaningful in a `for', `while', or `until' loop
+ declare
例:あなたは、このようなエイリアスを必要とする理由
# When outside an function
local some_var=val
+ '[' -z '' ']'
+ builtin local
-bash: local: can only be used in a function
# That's it
# When inside an function func
local some_var=val
+ '[' -z func ']'
+ declare some_var=val
# Uses my modified declare function
'local'キーワードをシャドーしようとしていますか?とにかく、毎回実行したくない場合は、 'else'ブロックに' declare'を入れてみませんか? –
'local:関数でのみ使用できます'説明していませんか?それをしないでください! ;-)可変引数を取ろうとしているものは、関数として記述する必要があります。がんばろう。 – shellter
@Eric Renouf宣言をelseブロック内に置くと、変数を宣言することができなくなります。私の更新を見てください。 – BonBon