シェルスクリプトの$1と$2とは何か?$0との違い

Bash-prograshi(プロぐらし)-kv General
記事内に広告が含まれていることがあります。

拡張子.shのシェルスクリプトファイルに$1や$2といった表記が出てきます。

初見だと複雑に見えますが、中身はとても簡単です。



シェルスクリプトの$1と$2とは何か?

$1$2関数に渡された引数の値です。

数値は渡した引数の順番になります。


実例

次のようなファイルを用意します。

#!/bin/bash

function hello(){
  echo "こんにちは $2 と $1"
}

hello taro mako

関数helloを定義して、「こんにちは $2 と $1」を出力します。

$2には2番目に渡した引数の値、$1には1番目に渡した引数の値が入ります。

末尾の hello taro mako でhello関数を実行しています。1つ目の引数はtaro、2つ目の引数はmakoです。

実行結果

ファイルの実行結果は次のようになります。

$ ./test.sh
こんにちは mako と taro
注意点

シェルスクリプトで定義した関数を呼び出す時は () は不要です。カッコをつけるとエラーになります。

hello(taro mako)

▼実行結果

$ ./test.sh
./test.sh: line 7: syntax error near unexpected token `taro'
./test.sh: line 7: `hello(taro mako)'


$0とは何か?

とは何か?

$1や$2以外にも$0という変数があります。

これは、ファイル名を呼び出す変数です。

例えば、./test.shの中に$0が記述されていれば、$0 = ./test.sh となります。

function fileName(){
  echo "実行しているファイルは$0です。"
}

fileName

▼実行結果

$ ./test.sh
実行しているファイルは./test.shです。

タイトルとURLをコピーしました