コマンドで$()は何ですか?

コマンドで$()は何ですか?

$()Linuxシェルコマンドには何がありますか?

たとえば、

chmod 777 $(pwd)

答え1

バックティック ``と非常に似ています.

知られているコマンドの置き換えPOSIX仕様)そしてサブシェルを呼び出します。中かっこ$()または逆引用符()の間のコマンドは`…`サブシェルで実行され、出力は元のコマンドに配置されます。

バックティックとは異なり、この$(...)形式は入れ子にすることができます。したがって、他の置換内でコマンド置換を使用できます。

代替のエスケープ文字にも違いがあります。私はこの$(...)形式を好みます。

答え2

POSIXまたはPOSIXに似たシェル(ksh、、、、、、... )では、次のようになりますbash。内部でコマンドを実行し、それを標準出力に置き換えます。二重引用符内にない場合は、単語の区切りとファイル名の生成が行われます。だからashzshyash``$()$()

chmod 777 $(pwd)

次に交換する必要があります。

chmod 777 "$(pwd)"

現在の作業ディレクトリパスで単語の分割やファイル名の生成を防ぎます。

またはより良い(ディレクトリ名が変更された場合はzshなどの一部のシェルでは除外)。

chmod 777 "$PWD"

以降は、$PWDPOSIXシェルの現在の作業ディレクトリへのパスを保持する特別な変数です。

または、より良い方法は次のとおりです。

chmod 777 .

.現在のディレクトリのエントリは、ディレクトリ自体へのハードリンクであるためです。

答え3

これは$()、主に他のコマンド内でコマンドを実行するために使用されます。

chmod 777 $(pwd)

pwdこのコマンドは現在の作業ディレクトリを提供します。したがって、プロセス全体が実行されると、pwdの出力はpwdの引数としての場所を置き換え、chmod結果として現在の作業ディレクトリはすべて本番777環境で絶対に使用しないでください。 ;)

関連情報