$*
の最後の要素を取得したい。zsh:スクリプトに与えられた最後のコマンドライン引数にアクセスする
last=`eval "echo \\\$$#"`
しかし、それはあまりに不透明なようだ:私はこれまでに見つかった最高です。 zshので
$*
の最後の要素を取得したい。zsh:スクリプトに与えられた最後のコマンドライン引数にアクセスする
last=`eval "echo \\\$$#"`
しかし、それはあまりに不透明なようだ:私はこれまでに見つかった最高です。 zshので
、あなたはP
parameter expansion flagを使用したり、位置パラメータを含む配列として@
を扱うことができ、次のいずれか
last=${(P)#}
last=${@[$#]}
のzshを含むすべてのBourneスタイルのシェルで動作する方法は
eval last=\$$#
です
(正しい軌道に乗っていましたが、出力を得るためにecho
を実行するだけで無意味です)
last=${@[-1]}
このトリックを行う必要があります。より一般的には、
${@[n]}
一方
${@[-n]}
、* N *番目のパラメータが得られるが、最後のパラメータに目*を得N *であろう。
大腸パラメータ展開はPOSIXではありませんが、これは、少なくともzshの、bashで動作し、kshの:引数がない場合は
${@:$#}
、${@:$#}
はzshのとkshのに$0
として扱われますが、 bashで空のまま:
$ zsh -c 'echo ${@:$#}'
zsh
$ ksh -c 'echo ${@:$#}'
ksh
$ bash -c 'echo ${@:$#}'
$