-1

質問を編集しています。PERL/tcl スクリプトを開始する前に、次のように表示されました。

#!/bin/sh
# \
exec tclsh "$0" ${1+"$@"}
package require Expect

「exec tclsh "$0" ${1+"$@"}」が何を意味するのかわかりませんでした。これは tcl スクリプトです。私がPERLでも気づいたのと同じこと。

4

1 に答える 1

1

シェルで$1は、 は最初の引数であり$@、すべての引数です。${FOO+BAR}「$FOO が設定されている場合、BAR を使用する」ことを意味します。

したがって${1+$@}、「最初の引数が設定されている場合、すべての引数」を意味します。しかし、それは冗長ですよね?

GNU Autoconf マニュアルの Portable Shell Programming セクションには、Shell Substitutionsで次のように記載されています。

最も有名なシェルの移植性の問題の 1 つは、'"$@"' に関連しています。位置引数がない場合、Posix は '"$@"' は何も等価ではないはずだと言っていますが、元の Unix バージョン 7 の Bourne シェルはそれを代わりに '""' と等価なものとして扱っていました [... 長い議論悲惨な詳細の...]

ただし、これは二重引用符が使用されている場合にのみ意味があります。ここで、それらは偶然に取り残されたようです。

于 2013-06-25T09:39:12.983 に答える