$
記号で始まるbashの特別なパラメーターが見つかりました。例:終了ステータスをさまようとき、$?
、プロセスID by$$
などについて知っていました。
それで、私はこの投稿を共有して、特別なbash(シェル)パラメータとその使用法を知っています。
Bash Reference Manualの .4.2 Special Parameters を参照してください。
$ *
($ *)1つから開始して、位置パラメーターに展開します。展開が二重引用符内にない場合、各位置パラメーターは個別のWordに展開されます。それが実行されるコンテキストでは、それらの単語は、さらに単語分割とパス名拡張の対象となります。展開が二重引用符内で発生すると、各パラメーターの値がIFS特殊変数の最初の文字で区切られた単一のWordに展開されます。つまり、「$ *」は「$ 1c $ 2c…」と同等です。ここで、cはIFS変数の値の最初の文字です。 IFSが設定されていない場合、パラメーターはスペースで区切られます。 IFSがnullの場合、パラメーターはセパレーターを介さずに結合されます。
$ @
($ @)1つから開始して、位置パラメーターに展開します。展開が二重引用符で囲まれている場合、各パラメーターは個別のWordに展開されます。つまり、 "$ @"は "$ 1" "$ 2"…と同等です。二重引用符で囲まれた展開がWord内で発生する場合、最初のパラメーターの展開は元のWordの最初の部分と結合され、最後のパラメーターの展開は元のWordの最後の部分と結合されます。位置パラメータがない場合、「$ @」と$ @は何も展開しません(つまり、削除されます)。
$#
($#)10進数の定位置パラメーターの数に展開します。
$?
($?)最後に実行されたフォアグラウンドパイプラインの終了ステータスに展開されます。
$-
($-、ハイフン。)呼び出し時に、set builtinコマンド、またはシェル自体によって設定された現在のオプションフラグ(-iオプションなど)に展開されます。
$$
($$)シェルのプロセスIDに展開されます。 ()サブシェルでは、サブシェルではなく、呼び出し元のシェルのプロセスIDに展開されます。
$!
($!)非同期コマンドとして実行されたか、組み込みのbgを使用しているかにかかわらず、最後にバックグラウンドに配置されたジョブのプロセスIDに展開されます( Job Control Builtins を参照)。
$ 0
($ 0)シェルまたはシェルスクリプトの名前に展開されます。これはシェルの初期化で設定されます。コマンドのファイルを使用してBashが呼び出された場合( Shell Scripts を参照)、$ 0はそのファイルの名前に設定されます。 -cオプション( Bashの呼び出し を参照)を使用してBashを開始すると、実行する文字列の後にある最初の引数(存在する場合)に$ 0が設定されます。それ以外の場合は、引数0で指定された、Bashの呼び出しに使用されるファイル名に設定されます。
$ _
($ _、アンダースコア。)シェルの起動時に、実行中のシェルまたはシェルスクリプトを呼び出すために使用される絶対パス名を、環境または引数リストで渡されたとおりに設定します。その後、展開後に、前のコマンドの最後の引数に展開します。また、そのコマンドにエクスポートされた環境で実行および配置された各コマンドを呼び出すために使用される絶対パス名に設定します。メールをチェックするとき、このパラメーターはメールファイルの名前を保持します。
これは、bashのmanページからも印刷できます。
$ man bash | awk '/Special Parameters$/','/Shell Variables$/'
(bash)シェルの特殊パラメータに関する情報/知識を得るために(新規ユーザーを含む)全員に役立つことを願っています
Bash-scripting guide によると。
スクリプト自体のプロセスID(PID)。 $$変数は、多くの場合、「一意の」一時ファイル名を作成するためにスクリプトで使用されています。スクリプトでecho $$
を実行すると、出力が現在のシェルのPIDと異なることがわかります。