home ホーム search 検索 -  login ログイン  | reload edit datainfo version cmd icon diff delete  | help ヘルプ

技術/shell/bashシェルスクリプトまとめメモ (v1)

技術/shell/bashシェルスクリプトまとめメモ (v1)

技術 / shell / bashシェルスクリプトまとめメモ (v1)
id: 349 所有者: msakamoto-sf    作成日: 2003-04-17 11:50:41
カテゴリ: Linux UNIX シェルスクリプト 

bashでのシェルスクリプトの情報源:

他、/etc/rc.d/ 以下の各種サービス起動スクリプトが参考になります。

以下は実際にシェルスクリプトを書いていた時のTipsです。



"&&" と "||" と "exec" の使い分け

・"&&"の例 : /foo/bar が存在すれば、$HOME/bin/baz を実行。

[ -f /foo/bar ] && $HOME/bin/baz

・"||"の例 : /foo/bar が存在 ''しなければ''、$HOME/bin/baz を実行。

[ -f /hoge/bohe ] || $HOME/bin/uhyou

多くのプログラミング言語もそうですが、or演算の場合、先にtrue評価の式があると、後ろの式は評価されなくなります。bashの "&&", "||" でも同様の動きになります。

・execの注意点 : execシェルコマンドはプロセスを置き換えてしまいます。つまりexecが実行されたらそれ以降のシェルスクリプトは実行されません(=復帰しません)。各種スクリプトで "&&", "||" と共に exec コマンドも頻出しますが、この点を読み違え無いよう注意が必要です。

ワイルドカード(*)の注意点

便利なワイルドカード、*ですが、使用上の注意点もあります。

たとえば、rhostsファイルのあるディレクトリで

$ find /etc -name r*

として、「rで始まるファイルを/etcから探そう」としても、r* が rhosts に展開されてしまい、

$ find /etc -name rhosts

が実行されてしまいます。

これを避けるには、メタ文字展開の抑制を使います。

$ find /etc -name "r*"
  • シングルクォテーション「'」で囲むと、「!」以外のメタ文字を展開しません。
  • ダブルクォテーション「"」で囲むと、「!, $, `」以外のメタ文字を展開しません。
  • \(バックスラッシュ)だと、この直後の一文字を展開しません。

メタ文字とは関係が薄いですが、コマンド履歴を呼び出す "!!", "!N" をバッククォートで囲むと、中のコマンドが実行された結果に展開されます。



プレーンテキスト形式でダウンロード
表示中のバージョン : 1
現在のバージョン : 4
更新者: msakamoto-sf
更新日: 2013-01-28 08:09:37
md5:4640e8a5d4cc6dad68726497ef25c23a
sha1:9f07652ff42b6fba2ad9c37c5a17ff1eb80b583a
コメント
コメントを投稿するにはログインして下さい。