HOWTO · Bash

Bash スクリプトファイル名を取得する

このチュートリアルでは、Bash でファイル名を取得する方法について説明します。

この記事では、スクリプトによって独自のファイル名を取得する方法を示します。また、トピックを簡単にするために必要な例と説明が表示されます。

このタスクを実行するために利用できる多くの方法があります。しかし、これを行うための 3つの簡単な方法を見ていきます。

それらを見てみましょう。

Bash スクリプトのファイル名を取得するために basename コマンドを使用する

スクリプトのファイル名は、Bash に組み込まれているコマンドである basename コマンドを使用して取得できます。これを行うには、以下のコードに従う必要があります。

$ cat directory/ScriptName.sh
#!/bin/bash
echo "Your script name =" $(basename "$0")

スクリプトのファイル名を見つけるために、basename コマンドで $0 を使用したことがわかります。この $0 は、相対パスのファイル名を表す Bash の組み込み変数です。

コマンドを実行すると、以下の出力が表示されます。

$ directory/ScriptName.sh
Your script name = ScriptName.sh

Bash スクリプトのファイル名を取得するためにパラメータ展開を使用する

パラメータ展開を使用して同じタスクを実行することもできます。このメソッドで同じタスクを実行するには、以下のコードに従う必要があります。

$ cat directory/ScriptName.sh
#!/bin/bash
echo "Your script name = ${0##*/}"

パラメータの展開を示すために使用される記号の組み合わせ ${0##*/} を使用していることがわかります。コマンドを実行すると、以下の出力が表示されます。

$ directory/ScriptName.sh
Your script name = ScriptName.sh

BASH_SOURCE 変数を使用して Bash スクリプトファイル名を取得する

BASH_SOURCE は、ファイル名を含む Bash の組み込み環境変数です。この変数を使用してスクリプトのファイル名を見つけるには、以下のコードに従う必要があります。

$ cat directory/ScriptName.sh
#!/bin/bash
echo "Your script name =" $(basename "${BASH_SOURCE}")

コマンドを実行すると、以下の出力が表示されます。

$ directory/ScriptName.sh
Your script name = ScriptName.sh

この記事で使用されているすべてのコードは Bash で記述されていることに注意してください。Linux シェル環境でのみ機能します。