ぽかぽかコード日和

とっても暑い夏の日にプログラミングはじめました☀️

【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
  • ’(シングルクォーテーション)はすべて文字列として扱われ、
    "(ダブルクォーテーション)は、\の改行を無効化している。

参考にしたサイト