Linux シェルスクリプト
シェルスクリプトとは
保存して再利用できる様にしたシェル群
シェルスクリプト実行方法
通常
sh test.sh
実行権限付与後に実行
シェルスクリプト:test.shに実行権限を与える
$ chmod +x test.sh
(続けて)実行(カレントディレクトリ指定が必要)
$ ./test.sh
シェルの起動と同時に実行
$ bash test.sh
xargs
入力されたリストに対して指定のコマンド(シェル)を実行する
入力は標準入力、ファイル等
例:検索されたファイルを削除する
ls | xargs rm -rf
例:指定のファイルを検索、検索されたファイルの中から指定の文字を表示する
find / -type f -name "*.txt" | xargs grep 'password' -n
例:指定のファイルを検索、検索されたファイルの中から指定の文字を置換する
find ./ -type f -name "test*.txt" | xargs sed -i "s/bbbbb/zzzzz/g"
シェルスクリプト作成方法
拡張子
「.sh」が一般的(なくても動作可能)
シェルの種類を指定
一行目
#!/bin/bash
変数操作
変数宣言
val="aaa"
宣言時は「$」不要
val:aaa
文字列に変数を埋め込み
fileNm="${val}.txt"
変数使用時は「$」必要
fileNm:aaa.txt
※改行を追記
echo >> $fileNm
※文字列'aaa'を出力
echo $fileNm
→ aaa.txt
変数に格納したファイル名にリダイレクト
echo "aaa" > $fileNm
→ aaa.txtにaaaが出力される
インクリメント
count=$(( count++ ))
count=$(( count + 10 ))
Linuxコマンド実行
`(バッククォート)で囲む
`cat test.txt | ws -l`
eval関数使用
eval "cat ${val}.txt | ws -l"
変数使用時
変数にコマンドを格納して呼び出し
com="cat test.txt | ws -l"
$com
結果を変数に格納
count=`cat test.txt | ws -l`
count:100
Linuxコマンド実行結果をリダイレクト
`cat test.txt | ws -l` > result.txt
`cat test.txt | ws -l > result.txt`はダメ