
私はshがデフォルトのシェルを呼び出すことを知っているので、「bash -」は同じ意味です。しかし、誰かが私に構文を説明できますか? bashのマニュアルを探しましたが、見つかりませんでした。コマンドの出力を実行したかったため、この問題が発生しました。前任者。
echo date | sh -
日付を印刷してください。
答え1
はい、同じ意味ですsh -
。bash -
man bash には次の説明があります。
-
A - オプションの終わりを示し、追加のオプション処理を無効にします。 - 以降のすべての引数はファイル名と引数として扱われます。 - の引数は - と同じです。
これは単にオプションの終わりを表し、その後のすべてのトークンはダッシュで始まってもパラメータ(オプションではない)であることを意味します-
。
まだ一つあります。POSIX shにも同様の説明があります。。
したがって、今回のPOSIX.1-2017ボリュームでは、従来の方法は非常に一般的なものと見なされるため、通常の「--」引数に加えて、オプションの最後に単一のタグを使用できます。
このコマンドは次のとおりです。
$ echo "date" | sh -
Mon Feb 12 00:00:00 UTC 2018
しかし、以下も実行してください。
$ echo "date" | sh
Mon Feb 12 00:00:00 UTC 2018
この
$ echo "date" | sh -s
Mon Feb 12 00:00:00 UTC 2018
これにより、何が実行されているかが明確になります。
$ echo "date" | sh -x
+ date
Mon Feb 12 00:00:00 UTC 2018
しかし、これは失敗します。
$ echo "date" | sh - -x
sh: 0: Can't open -x
これは、日付文字列が標準入力からコマンドとして読み取られ、ダッシュ(-)がオプションの終わりと引数の始まり(-と同じ)を表すことを意味します。