これでシェルスクリプトの基本的な文法をマスター!
今から駆け出しエンジニアのために
シェルスクリプトの基礎となる文法をレクチャーしていきます!
この記事はBash向けに書かれたものです。
Shebang(シェバン)
#!/bin/bash
取り敢えずシェルスクリプト(Bash)の一番最初にはこれを書きましょう。
「このスクリプトはBashで書くよ」という宣言をします。
書かなければいけない理由は長くなるので省略しますが、
きっといずれわかるようになるはずです。
これを活用すればプログラミング言語の宣言なども可能になります。
コメント
# これはコメントです
行全体がコメントとして扱われます。
スクリプトに注釈を付けたいときに使いましょう。
変数の定義
name="たかし" # 変数に値を代入
echo $name # 変数の値を表示
変数に値を代入する場合、スペースを入れずに=
で設定します。
- 変数を参照するには
$
を使います - 変数の参照には
$name
のように書きます
条件分岐(if文)
if [ $name == "たかし" ]; then
echo "こんにちは、たかし!"
else
echo "あなた誰ですか"
fi
- 条件式の前後にスペースを空ける必要があります
-
[ ... ]
は条件式を評価するための構文です -
==
は文字列の比較に使います
繰り返し(for文)
for i in 1 2 3 4 5; do
echo "番号 $i"
done
また、for
ループで指定されたリストを使うこともできます。
for i in {1..5}; do
echo "番号 $i"
done
while文
while
ループは条件がtrue
の間繰り返しを実行します。
i=1
while [ $i -le 5 ]; do
echo "番号 $i"
((i++)) # iの値をインクリメント
done
関数の定義
関数を定義する際には次のように書きます。
function greet() {
echo "こんにちは、$1!" # 引数$1を表示
}
greet "たかし" # 関数を呼び出す
配列
Bashでは配列を使うこともできます。
people=("たかし" "たけし" "たくや")
echo ${people[0]} # 配列の最初の要素を表示
- 配列のインデックスは0から始まります
- 配列の長さを取得するには
${people#[@]}
を使用します
標準入力/出力
- 標準出力への表示には
echo
を使います
echo "こんにちは、たかし!"
- 標準入力を受け取るには
read
を使います
echo "名前は?"
read name
echo "こんにちは、$name!"
ファイルの読み書き
Bashではファイルを読み書きすることができます。
- ファイルに書き込むには
>
(上書き)や>>
(追記)を使用します
echo "これはたかしです" > test.txt # 上書き
echo "これはたかしではありません" >> test.txt # 追記
- ファイルの内容を読み込むには
cat
を使用します
cat test.txt
複数のコマンドを実行する
-
;
を使って複数のコマンドを1行で実行できます
echo "たかし"; echo "たけし"
-
&&
は前のコマンドが成功した場合に次を実行します
echo "蘇生成功" && echo "たかしが蘇りました!"
-
||
は前のコマンドが失敗した場合に次を実行します
echo "蘇生失敗" || echo "たかしは寝たきりです"
プロセスのバックグラウンド実行
コマンドをバックグラウンドで実行するには、コマンドの後ろに&
を付けます。
複雑なコマンドの使い方
- コマンドの出力を変数に代入する方法:
output=$(ls -l)
echo "$output"
- パイプ(
|
)を使ってコマンドを繋げる:
cat file.txt | grep "たかし"
- リダイレクトを使って出力をファイルに保存する:
echo "たかし" > output.txt