"sh-"とはどういう意味ですか?

私は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

これは、日付文字列が標準入力からコマンドとして読み取られ、ダッシュ(-)がオプションの終わりと引数の始まり(-と同じ)を表すことを意味します。

おすすめ記事