GNU/Linux >> Linux の 問題 >  >> Linux

`sh -c`の`name`引数は何ですか?

shのFreeBSDのマニュアルページから引用(オンラインで最も便利なため、重要な場合はターゲットプラットフォームはDebianです):

SH(1)           FreeBSD General Commands Manual          SH(1)

NAME
     sh -- command interpreter (shell)

SYNOPSIS
     sh [-/+abCEefhIimnPpTuVvx] [-/+o longname] [script [arg ...]]
     sh [-/+abCEefhIimnPpTuVvx] [-/+o longname] -c string [name [arg ...]]
     sh [-/+abCEefhIimnPpTuVvx] [-/+o longname] -s [arg ...]
...

私は特に次のユースケースに興味があります:

sh [-/+abCEefhIimnPpTuVvx] [-/+o longname] -c string [name [arg ...]]

例:

# Normal:
myscript hello world
myscript hello world >/var/log/myscript.combined 2>&1

# Constrained:
#  - Arguments 'hello' and 'world' are suffixed by calling program.
myscript >/var/log/myscript.combined 2>&1 hello world

# Constrained Further:
#  - Wrapped in `sh` to catch system messages, like Segmentation Fault

sh -c 'myscript [email protected]' _ >/var/log/myscript.combined 2>&1 hello world

最初の引数がmyscriptに渡されていないことに気づきました 、およびドキュメントはnameをほのめかしています パラメータ、ドキュメントセクションが表示されませんでした。私の例では、広告_を追加しました name引数の代わりに、ただし:

nameに何を入力すればよいですか ?

承認された回答:

フォーム:

sh -c '...' name arg1 arg2 ...

インラインスクリプトと呼ばれ、find ... -exec sh -c '...' find-sh {} +と組み合わせてよく見られます。 。インラインスクリプト内、$0 nameに設定されます 、残りの引数は[email protected]に入力されました 。

一般に、エラーメッセージを表示する場合などに使用されるため、意味のあるものに設定する必要があります。

sh -c 'echo "${1?}"' foo
foo: 1: foo: 1: parameter not set

ただし、nameを設定することはできます インラインスクリプトの名前を示すために、好きな単語に:

sh -c 'printf "%sn" "$0"' custom-sh 1 2 3
custom-sh

この動作はPOSIXによって定義されています。


Linux
  1. Linuxコマンドラインに関する8つのヒント

  2. コマンド単一引数の最大サイズを定義するものは何ですか?

  3. ランプをオンにする:開発者のためのクラッパー

  1. Linux 用のバイナリ アプリケーションを配布する最良の方法は何ですか?

  2. 画面に名前を付けるには?

  3. ドライブ名? /dev/sda の sda 部分の正しい用語は何ですか?

  1. Sudo Su –とSudo Su —の違いは何ですか?

  2. `builtin`ビルトインが必要ですか?

  3. Linux – `hostname`のデフォルトファイルは何ですか?