前回のLinuxシェルスクリプトの基礎学習の記事では、Linuxシェルスクリプトの制御処理のif、select、caseについてお話しましたが、ここではLinuxシェルスクリプトの制御処理のループと引用符について紹介します。 . 制御プロセスにはさらに多くの内容があり、一部もあります。 内容はここのドキュメントに関するものです。
4.loop
ループ式:
while ...; do .... done
while-loopは式のテストがtrueになるまで実行されます。テストする式が true である間実行されます。
キーワード「break」はループを抜け出すために使用されます。キーワード「Continue」は、残りの部分を実行せずに次のループに直接ジャンプするために使用されます。
for ループ式は文字列のリスト (スペースで区切られた文字列) を調べ、それを変数に割り当てます:
for var in ....; do .... done
次の例では、ABC がそれぞれ画面に表示されます:
#!/bin/sh for var in A B C ; do echo "var is $var" done
ここに A がありますさらに便利なスクリプトは showrpm です。その機能は、RPM パッケージの統計情報を出力することです:
#!/bin/sh # list a content summary of a number of RPM packages # USAGE: showrpm rpmfile1 rpmfile2 ... # EXAMPLE: showrpm /cdrom/RedHat/RPMS/*.rpm for rpmpackage in $*; do if [ -r "$rpmpackage" ];then echo "=============== $rpmpackage ==============" rpm -qi -p $rpmpackage else echo "ERROR: cannot read file $rpmpackage" fi done
2 番目の特殊変数 $* がここに表示されます。これには、入力されたすべてのコマンド ライン パラメーターの値が含まれます。
showrpm openssh.rpm w3m.rpm webgrep.rpm を実行すると、$* には openssh.rpm、w3m.rpm、webgrep.rpm の 3 つの文字列が含まれます。
5. プログラムにパラメータを渡すときの引用符
、プログラムはワイルドカードと変数を拡張しました。ここでのいわゆる展開とは、プログラムがワイルドカード文字 (* など) を適切なファイル名に置き換え、変数を変数値に置き換えることを意味します。プログラムがこの置換を行わないようにするには、引用符を使用します。 現在のディレクトリにいくつかのファイル、つまり 2 つの jpg ファイル、mail.jpg と tux.jpg があると仮定して、例を見てみましょう。
1.2 SHELL スクリプト
#ch#!/bin/sh mod +x filename
cho *.jpg ∪ ゆっくり 螅谛果暙耄?./filename をコンパイルしてスクリプトを実行します。
これにより、「mail.jpg tux.jpg」の結果が出力されます。
引用符 (単一および二重) は、このワイルドカード展開を防ぎます:
#!/bin/sh echo "*.jpg" echo '*.jpg'
一重引用符はより厳密です。これにより、変数の展開が防止されます。二重引用符はワイルドカードの展開を防ぎますが、変数の展開は可能です。
#!/bin/sh echo $SHELL echo "$SHELL" echo '$SHELL'
/bin/bash /bin/bash $SHELL
echo *.jpg echo $SHELL
*.jpg $SHELL