ホームページ  >  記事  >  バックエンド開発  >  Linuxシェルスクリプトの基礎学習を徹底紹介(4)

Linuxシェルスクリプトの基礎学習を徹底紹介(4)

黄舟
黄舟オリジナル
2017-02-04 09:21:041650ブラウズ

前回の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'

これは、「*.jpg」を 2 回出力します。

一重引用符はより厳密です。これにより、変数の展開が防止されます。二重引用符はワイルドカードの展開を防ぎますが、変数の展開は可能です。

#!/bin/sh
echo $SHELL
echo "$SHELL"
echo '$SHELL'

実行結果は次のとおりです:


/bin/bash
/bin/bash
$SHELL

最後に、この展開を防ぐ別の方法があります。それはエスケープ文字であるバックスラッシュバーを使用することです:


echo *.jpg
echo $SHELL

これは出力します:


*.jpg
$SHELL

Linuxシェルスクリプトの基本についてはこれで終わりです。ここのドキュメントには制御プロセスの内容がまだ少し残っていますが、これについては次回分析します。


上記は、Linux シェル スクリプトの基礎学習 (4) の詳細な紹介です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。