最後の定位置パラメーターを設定しようとしている間に/bin/dash、試しましたecho ${$#}。驚いたことに、これはエラーにならず、$$変数の内容と同じPIDになりました。質問、なぜその構文が機能したのですか?ここでシェルが適用した構文規則は何ですか?
基本的に、私がしたことは
$ set 1 2 3 4 5
$ echo ${$#}
13819
$ echo $$
13819
どうやら、%文字もそのような構成では無視されます
$ echo ${$%}
13819
しかし、*と@悪い置換誤りが発生:
$ echo ${$*}
sh: 10: Bad substitution
$ echo ${$@}
sh: 11: Bad substitution
@Kusalananda期待はありません。私は他のキャラクターを試してみました
—
セルギーコロディアズニー
#、%そしてそれらからどのような行動が起こります。
—
wjandrea
@wjandreaうん、すでにそれを知っている。実際には既に質問があります:stackoverflow.com/questions/1853946 / ...最初に質問を読まずに自分でメソッドを見つけようとしました(そして、
—
Sergiy Kolodyazhnyy
for i; do true; done最後のアイテムを入れることは既に知っていました$i)が、もっとエレガントなものを探していました。evalもちろん、潜在的な問題を抱えている可能性があり、どの程度まで考えられます-それは別のトピックです。しかし、はい、それはオプションだ
${$*}し${$@}、生産しますか?