ShellScriptメモ
目次
変数
appdir=~/hogehoge/app
echo $appdir
echo ${appdir}_backup # 変数名の区切りを明示
=の前後にはスペースを入れない- 変数名に利用できる文字はアルファベットと数値と
_(アンダースコア)
位置パラメータ
シェルスクリプトからコマンドライン引数を扱う
$ ./parameter.sh aaa bbb ccc
- ./parameter.sh:
$0 - aaa:
$1 - bbb:
$2 - ccc:
$3 - 引数の個数(3):
$# - 引数全体の参照:
$@,$*"$@": 位置パラメータがそれぞれ1つずつの文字列として展開"$1" "$2" … "$N"
"$*": 引数全体が1つの文字列として展開"$1 $2 … $N"
- 終了ステータス:
$?- 正常終了: 0
- エラー時: 0以外の値
記法
if文
if <コマンド1>; then
「処理」
elif <コマンド2>; then
「処理」
elif <コマンド3>; then
「処理」
else
「処理」
fi
if [ "$1" = "bin" ]; then[はシェルの組み込み関数
→ スペースをそれぞれ開ける必要がある
&&と||
<コマンド1> && <コマンド2>- コマンド1が正常終了したときだけコマンド2を実行
- ex)
[ -f file.txt ] && cat file.txt - ファイルが存在すればcatコマンドを実行
<コマンド1> || <コマンド2>- コマンド1が正常終了しなかったときだけコマンド2を実行
- ex)
[ -f file.txt ] || touch file.txt - ファイルが存在しなければtaouchコマンドでファイルを作成
for文
for <変数名> in <リスト>
do
「繰り返す処理」
done
ex) コマンドライン引数を1つずつ表示
for param in "$@"
do
echo "$param"
done
よく書く記述
#!/usr/bin/env bash$PATH上のbashが使われる
set -eu-eオプション: エラーが起こった時点でスクリプトを中断してくれる-uオプション: 未定義の変数を使おうとしたときに中断してくれる (タイポ等に○)
変数名=${変数名:-xxx}- 変数のデフォルト値の定義
if [[ <条件> ]]