概要
Linux学習で覚えたコマンドや知識をメモする記事です。
事前知識
実行権限
実行できる権限があること
権限については、Linux覚え書きユーザ管理を参照。
シェル変数と環境変数
- シェル変数 :実行しているシェルの内部でのみ有効
- 環境変数 : シェル外で引き継げる
基本コマンド
echo :文字列の出力
echo [オプション] 文字列
オプション | 説明 |
---|---|
-n | 改行削除 |
シェル変数
変数定義
a=1
echo $a #変数の内容を参照
配列
a[0]=1
a[1]=2
index=1
echo ${abc[index]}
変数の一覧表示
シェル変数の一覧を表示する
set
環境変数の一覧表示
env
unset: 変数を削除する
unset []
export :環境変数を作成する
export a
export y=123
read :標準入力を読み込む
read [変数名]
引用符
'(シングルクォート)、"(ダブルクォート)は文字列で表現する
`(バッククォート)はコマンドが実行される
test=date
echo 'aaa $test' # aaa $test
echo "aaa $test" # aaa date
echo "aaa `$test`" # aaa thu mar 20YY MM
引数
実行時にオプションを引数として参照する
echo $1
echo $2
¥ :特殊な文字列
- 特殊な文字を文字列で表示したい場合に、直前に¥をつける
- 改行として行末に¥を追加する
source :指定ファイルを読み込んでシェル環境を設定
# bash_profileなどを更新した時
source ~/.bash_profile
# シェルスクリプトで定義された変数を環境変数として取り込む
source ./test.sh
条件分岐 / 繰り返し
if文
if 条件式 then ... elif 条件式 else fi
演算子 | 説明 |
---|---|
a == b | aとbが等しければ真 |
a != b | aとbが等しくなければ真 |
a -eq b | aとbが等しければ真 |
a -ne b | aとbが等しくなければ真 |
a -ge b | aがb以上であれば真 |
a -le b | aがb以下であれば真 |
a -gt b | aがbより大きい時は真 |
a -lt b | aがbより小さい時は真 |
case文
case 変数 in
値A)
処理1;;
値B|値3)
処理2;;
*)
# 条件に一致しなかった場合の処理
処理3;;
esac
for文
for 変数 in 値のリスト
do
echo $i
done
while/until文
while 条件式 # 成立する間繰り返す
do
処理
done
until 条件式 # 成立しない間繰り返す
do
処理
done
# カウンタで回す
count=1
while [$count -le 10]
do
count=`$count +1`
done
select文
select name in "a" "b" "c"
do
echo "you selected $name"
done
# 実行結果
# 1) a
# 2) b
# 3) c
# $?
繰り返しの制御
break : 繰り返しを終了
continue :繰り返しの先頭に戻る
複数の条件
AND条件
条件A -a 条件b -a 条件C
条件a && 条件b && 条件C
OR条件
条件A -o 条件b -o 条件C
条件a || 条件b || 条件C
ファイルの有無確認
# test コマンドを利用
if test -d path ; then...
# []を利用
if [-d path]; then
演算子 | 説明 |
---|---|
-f ファイル名 | ファイルなら真 |
-d ファイル名 | ディレクトリなら真 |
-e ファイル名 | ファイルが存在すれば真 |
-L ファイル名 | シンボリックリンクなら真 |
-r ファイル名 | 読み取り可能なファイルなら真 |
-w ファイル名 | 書き込み可能なファイルなら真 |
-x ファイル名 | ファイルが存在して、実行権限があれば真 |
-s ファイル名 | サイズが0より大きいなら真 |
サブルーチン
関数
function 関数名
{
処理
}
関数名()
{
処理
}
# 関数を実行(引数付き)
関数名 aa bb
return
関数内での処理を終了する
return 変数名
デバッグ
sh -x ファイル