質問

$のためにはどんな意味があります!シェルまたはシェルスクリプトでは?私は、次のようなものを持っているスクリプトを理解しようとしています。

local@usr> a=1
local@usr> echo $a
1
local@usr> echo $!a
a

これは、バック変数を印刷しています。それは、すべてのはそのためですか?我々が持っている他の$ xにオプションは何ですか?私が知っているいくつかは、$$、$の*、$です?。誰もが良いソースに私を指すことができれば、それが参考になります。ところで、これは、Sun OS 5.8である、KSHます。

他のヒント

私のシステム上のkshのmanページから:

  ${!vname}
      Expands  to the name of the variable referred to by vname.  This
      will be vname except when vname is a name reference.

あなたが求めているシェルの場合は、kshの、kshのマニュアルのrel="nofollow">

  

パラメータ置換の
       パラメータは、1桁以上の数字、または任意の識別子です。        文字*、@、#、 - ?!。、$、および

、$$と$!
-

それらが*、$ @、$#、$?$ $受け入れ選択肢であることは明らかです もっと将来に含めることができます。

<時間>

マニュアルからパラメータ$!の場合:

  

"!"最後のバックグラウンドコマンドのプロセス番号が呼び出されます。

あなたは、バックグラウンド・プロセスを開始する場合は、

sleep 60 &のように、そのようなプロセスのプロセス番号、およびパラメータ$があるでしょう!その番号が印刷されます。

$ sleep 60 &
[1] 12329
$ echo "$!"
12329

(シェルの起動時のように)実行中のバックグラウンド・プロセスがない場合、exansionは空です。これは、NULL値を持っています。

$ ksh -c 'echo $!'

バックグラウンド・プロセスがある場合、それはこのようなプロセスのPIDに展開されます。

$  ksh -c 'sleep 30 & echo $!'
42586

echo $!aaに拡張理由があります。報告する一切PIDがないからです。

$  ksh -c 'echo $!a'
a
<時間>

その他のシェルは、展開の異なる(通常はかなり似ている)のリスト(のみ1 $と1次の文字とパラメータ)を有していてもよい。
たとえば、bashは「特殊パラメータ」として、この*@#?-$!0_を認識しています。見出し「3.4.2特殊パラメータ」のバッシュマニュアルして検索します。

  

特殊パラメータ
         シェルは、特別にいくつかのパラメータを扱います。

これは最後のbackgroundjobまたはバックグラウンド機能のプロセスIDを与えます

以下は、このリンクを経由してください
http://www.well.ox.ac.uk/~johnb/comp/unix/ksh.html#specvar

!それはその名前で呼ばれていないが、UNIXの参照演算子です。

これは、常に母親のプロセスを意味します。入力してみてください! VIには、コマンドプロンプトが表示されます、あなたはexitコマンドまで、いつものようにコマンドを実行することができます。

! SQLPLUSでも、コマンドプロンプトからコマンドを実行します。

SQLPLUSでこれを試してみてください

SQL>!lsの---これは、現在のディレクトリintheファイルのリストを提供します。

$! - 明らかに現在/最新のプロセスのプロセスIDを示します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top