Shellスクリプトの'$'記号の様々な使い方

7033 ワード

Shellスクリプトの「$」記号の多様な使い方
前の記事では、Shellスクリプトとは何か、簡単なShellスクリプトの作成、数値/文字列/ファイル状態テストの関係演算子、if-then-else/case分岐構造、for/while/untilループ構造の作成の基礎について説明しました.詳細は、Shellプログラミング-条件テスト|基礎編とShellプログラミング-制御構造|基礎編を参照してください.
通常、作業で最も多く使用されるのは、$0:Shellのコマンド自体$1から$9です.Shellのいくつかのパラメータを表します.最後のコマンドの実行を表示$#:スクリプトに渡されたパラメータの数$:スクリプトが実行されている現在のプロセスID番号$*:スクリプトに渡されたすべてのパラメータを1文字列で表示します$!:バックグラウンドで実行される最後のプロセスのID番号$::Shellが使用する現在のオプションを表示します...今日は以上のいくつかのオプションを使用して、さらなる操作例を行います.
参照変数
変数を参照する場合は、$記号を使用して直接参照し、ループ変数を含む.
[root@localhost ~]# x=1024
[root@localhost ~]# echo $x
1024

二重引用符"で囲まれた文字列を変数補間をサポートします.
[root@localhost ~]# x=1024
[root@localhost ~]# echo "x = $x"
x = 1024

単語の境界として${}を使用します.
[root@localhost ~]# x=1024
[root@localhost ~]# echo "x = ${x}xy"
x = 1024xy

${#}を使用して変数文字列の長さを取得します.
[root@localhost etc]# s=helloworld
[root@localhost etc]# echo "s.length = ${#s}"
s.length = 10

参照スクリプトまたは関数パラメータ
参照スクリプトの方式に基づいて、1はShellスクリプトファイル名を表し、nは2からn番目のパラメータを表し、2番目のパラメータは$2である.
[root@localhost ~]# echo 'echo $1 $2 $3' > ping.sh
[root@localhost ~]# cat ping.sh
echo $1 $2 $3
[root@localhost ~]# sh ping.sh 1 2 3
1 2 3

単一引用符''で囲まれた文字列は補間されず、$#を使用してスクリプトまたは関数パラメータの個数を取得します.
[root@localhost ~]# echo 'echo $#' > ping.sh
[root@localhost ~]# sh ping.sh 1 2 3
3

前のコマンドの戻り値
$を使う?前のコマンドの戻り値.
0:エラーがないことを示し、その他の数値:エラーがあることを示します.
[root@localhost ~]# true 1024
[root@localhost ~]# echo $?
0
[root@localhost ~]# false 2048
[root@localhost ~]# echo $?
1

コマンド出力の実行と取得
$()を使用して、コマンド出力を変数に割り当て、二重引用符に等しい機能を実行して取得します.
[root@localhost ~]# echo `date`
2016  06  05      12:39:08 CST
[root@localhost ~]# echo $(date)
2016  06  05      12:39:34 CST

式の評価
[]を使用して式を評価します.コマンドe x prとは異なり、[]は式を評価します.コマンドexprとは異なり、[]は式を評価します.コマンドexprとは異なり、[]は補間に使用され、exprは値を出力するために使用されます.
[root@localhost ~]# echo $[1024 + 2048]
3072
[root@localhost ~]# expr 1024 + 2048
3072
[root@localhost ~]# a=1024
[root@localhost ~]# b=2048
[root@localhost ~]# echo $[ a + b ]
3072

現在のプロセスIDの取得
$を使用して、現在のプロセスのID番号を取得します.
[root@localhost ~]# echo $$
55580

バックグラウンドで実行される最後のプロセスID
$を使用!をクリックして、バックグラウンドで実行された最後のプロセスIDを取得します.
コマンドの最後に&を使用してバックグラウンドプロセスを作成します.
コマンドkill$を実行!そしてecho$を入力!このpingは終了する.shスクリプト.
[root@localhost ~]# tail -f /root/ping.sh &
[2] 55848
[root@localhost ~]# echo $!
55848
[root@localhost ~]# kill $!
[root@localhost ~]# echo $!
55848
[2]+     tail -f /root/ping.sh

シェルオプションの取得
$-を使用して、現在のシェルのオプションを取得します.
[root@localhost ~]# echo $-
himBH

おすすめ読書
1、必ずできる24のShellシナリオ面接問題
2、Shellのかっこの役割を一文で読む
3、信頼性の高いShellスクリプトを作成する上で注意しなければならないいくつかのアドバイスはありますか?
4、Shellプログラミング-条件テスト|基礎編
5、Shellプログラミング-制御構造|基礎編
6、Shellプログラミング|スクリプトパラメータとインタラクションとよくある問題
7、Shellスクリプト作成及びよくある面接問題
8、Linux shellの「2>&1」をどのように理解しますか?
9、bash shellのプログラミングをマスターするための図