【Shell Script】引用符、引数、改行の使い方
引用符
コマンドの中には、引用符を使うことがある。
引用符ごとに意味づけがあるため、変数にどの引用符を指定するかによって、変数の処理に影響を与える。
「 ' 」:単一引用符(シングルクォーテーション)
すべて単なる文字列として扱われる。「 ” 」:二重引用符(ダブルクォーテーション).
基本的には単なる文字列として扱われるが、変数が含まれるときは変数が展開される。
「\$VAR」のように「\(バックスラッシュ)」をつけることで、直後の「$」を無効化させ変数は展開しない。「 ` 」:バッククォート
囲った部分をコマンドとして実行し、その結果を出力する。
$ VAR=date $ echo $VAR #引用符なし date $ echo '$VAR' #シングルクォーテーション $VAR $ echo ”$VAR” #ダブルクォーテーション date $ echo `date` #バッククォート そのまま実行 2025年 2月 22日 土曜日 15:51:01 JST $ echo `$VAR` #バッククォート 変数を展開 2025年 2月 22日 土曜日 15:51:01 JST
「`」バッククォートは「’」と見分けづらいので、「$()」を使用することが推奨されている。
引数
シェルスクリプトの引数とは、
スクリプト実行するときに一緒に渡される値のこと。
- スクリプト内で使える特別な変数
| 特殊変数 | 意味 |
|---|---|
| $0 | ファイル名 |
| $1 ~$9 | それぞれ1〜9つ目の引数 |
| ${10} | 10つ目の引数(以降はこの形式で記述) |
| $# | 引数の総数 |
| $@ | すべての引数 |
| $* | すべての引数をひとつの文字列として表す |
①スクリプトに引数を渡す
シェルスクリプトにシバンを記載し、.shファイルを作成する。
#!/bin/bash echo "スクリプト名: $0" echo "1つ目の引数: $1" echo "2つ目の引数: $2" echo "引数の数: $#" echo "すべての引数: $@"
②スクリプトに実行権限を付与する
$ chmod 755 sample.sh
パーミッションが644から755になる。
③シェルスクリプトを実行する(ファイル名指定する場合)
$ ./sample.sh arg1 arg2 arg3 スクリプト名: ./sample.sh 1つ目の引数: arg1 2つ目の引数: arg2 引数の数: 3 すべての引数: arg1 arg2 arg3
改行
コード中に改行などを使うと、見やすいシェルスクリプトを作成できる。
改行はコマンドを切る意味を持っているため、
シェルスクリプトでコードを改行したい場合は、「(バックスラッシュ)」を使う。改行はコマンド中に何度でも使える。
#!/bin/bash echo \ xxx \ yyy \ zzz
$ bash ファイル名 xxx yyy zzz
- 改行したのにエラーが出る場合は、
まずは「\」の後ろにスペースが入っていないかを確認する。
改行\をクォーテーションに入れる
#!/bin/bash echo 'test \ xxx' #シングルクォーテーション echo "test \ xxx" #ダブルクォーテーション
$ bash ファイル名 test \ xxx test xxx
- ’(シングルクォーテーション)はすべて文字列として扱われ、
"(ダブルクォーテーション)は、\の改行を無効化している。