個人的によく使うif文の書き方をメモです。
使い方
if [ 条件 ]
then
# 実行したいコマンド
elif [ 条件 ]
then
# 実行したいコマンド
else
# 実行したいコマンド
fi
elif
が不要な場合はelif
からの3行、else
が不要な場合はelse
からの2行を削除してください。then
をよく忘れるので気をつけてください。
サンプル1
Shellスクリプトのコマンドラインオプション(数字)によって実行する内容を変えるサンプル。
$ cat example1.sh
#!/bin/sh
if [ "$1" -eq 10 ]
then
echo aaa
else
echo bbb
fi
$ ./example1.sh 10
aaa
$ ./example1.sh 20
bbb
-eq
(equal)の他にも-ge
(greater than or equal)-gt
(greater than)-le
(less than or equal)-lt
(less than)-ne
(not equal)なども使えます。
サンプル2
shellスクリプトのシンボリックリンクを作成して、ファイル名によって実行する内容を変えるサンプル。
$ cat example2.sh
#!/bin/sh
if [ `basename $0` = "exampleA.sh" ]
then
echo AAA
else
echo 222
fi
$ ln -s example2.sh exampleA.sh
$ ./example2.sh
222
$ ./exampleA.sh
AAA
関連記事
shellを使ったファイル名の一括リネーム
カレントディレクトリにある*.logファイルの拡張子を.txtに変更するサンプル 注
$ for i in *.log; do mv $i `basename -s .log $i`.txt; done
注 basenameコマンドに-sオプションを使うと末尾の文字列を削除できます。
...
シェル(bash)のforループに関する覚え書き
シェル(bash)のforループに関する覚え書き
forループ
使い方
$ for i in 1 aa 012; do echo $i; done
1
aa
012
1~100の数字でforループしたい場合
$ for i in {1..100} do echo $i; done
1
2
3
... 以下、省略
...
Shellのコマンドライン引数の扱い方
コマンドライン引数の取得(表示)
$ cat sample1.sh
#!/bin/sh
echo 1st: $1
echo 2nd: $2
echo all: $@
$ ./sample1.sh aaa bbb ccc
1st: aaa
2nd: bbb
all: aaa bbb ccc
コマンドライン引数の個数
$ cat sample2.sh
#!/bin/sh
echo ...
Bashでファイル名から拡張子とそれ以外の部分を分離する簡単な方法
example.txtというファイル名から拡張子とそれ以外の部分で分離するサンプル
$ full="example.txt"
$ extension=${full##*.}
$ filename=${full%.*}
$ echo $extension
txt
$ echo $filename
example
/path/to/example.txtのようなフルパスからディレクトリ部...
シェル(bash)でスペースの代わりに改行区切りでforループする方法
シェル(bash)のforループを使うとスペース区切りの文字列でループしてコマンドを実行することができます。(参考:forループに関する覚え書き)
便利な機能ですがスペースではなく改行\nでループしたい場合もあるかと思います。そういう場合にはIFSを使ってdelimiterを変更するテクニックがあるそうです。
使い方
今回は次のようなテキストファイルを使って1行ずつコマンドを実...
Shellスクリプトでcase文の使い方メモ
bash(sh)でcase文を書くときの基本は次のような感じです。
case $変数 in
パターン1)
実行したい内容1
;;
パターン2)
実行したい内容2
;;
esac
ということで、case文でよく使われるパターンを2つほど紹介してみようと思います。
曜日ごとに異なる内容を実行したい場合(cronで便利です)
case `...