シェルプログラミング のバックアップ(No.1)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- シェルプログラミング へ行く。
- 1 (2008-09-03 (水) 21:46:26)
- 2 (2008-09-03 (水) 21:53:21)
- 3 (2008-09-06 (土) 18:39:39)
シェルプログラミング †
シェルで悩んだところのメモ書きです。
シェルの変数について †
変数の意味は以下の通り
変数 | 意味 |
$$ | シェル自身のPID(プロセスID) |
$! | シェルが最後に実行したバックグラウンドプロセスのPID |
$? | 最後に実行したコマンドの終了コード(戻り値) |
$- | setコマンドを使って設定したフラグの一覧 |
$* | 全引数リスト。"$*"のように「"」で囲んだ場合、"$1 $2 … $n" と全引数を一つにくっついた形で展開される。 |
$@ | 全引数リスト。"$@"のように「"」で囲んだ場合、"$1" "$2" … "$n" とそれぞれの引数を個別にダブルクォートで囲んで展開される。 |
$# | シェルに与えられた引数の個数 |
$0 | シェル自身のファイル名 |
$1~$n | シェルに与えられた引数の値。$1は第1引数、$2は第2引数…となる。 |
リダイレクトについて †
標準出力のリダイレクトは以下の通り
コマンド > aaa.txt
標準出力+エラー出力のリダイレクトは以下の通り
コマンド >& aaa.txt
へー勉強になった
ちなみに、追記の場合は、「>」→「>>」にすればいいよ
awk †
awkはawkで何ページも書けちゃう内容なんだろうけど、とりあえず今日使ったやつだけ。
こんなテキストファイルがあります。このテキストファイルの名前が「Address.txt」だとします。
まあ、アドレス帳だと思ってください。
firstName lastName address phoneNo Shogo Miyazaki Tokyo 090-xxxx-yyyy Tatsuya Akasaka Osaka 080-aaaa-bbbb Mayuko Kobayashi Osaka 080-aaaa-bbbb Hana Takahashi Nagoya 070-cccc-dddd Tarou Omori Nagoya 070-cccc-dddd ・・・・
このアドレスの、苗字だけほしい場合、こんな感じにawkです。
[root@server tmp]# awk '{print $2}' Address.txt lastName Miyazaki Akasaka Kobayashi Takahashi Omori
へー2列目だけ取れた。
じゃあ、このアドレス帳のなかで、Address(住所)が「Osaka」の人のlastName(苗字)がほしいとき、こんな感じでawkします。