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`はダメ

Linux

前の記事

Linux 環境系