【シェルスクリプト】basenameから拡張子無しのファイル名を取り出す

いつも忘れてしまうので、メモですヵキヵキ…φ(*゚ω゚´*)

シェルスクリプトを作成するときにconfigファイルとかログファイルとかシェルと同じ名前することが多いと思います。

シェルスクリプト名を取り出したいだけなら、シェルスクリプトの中で

basename $0

を入れてあげれば良いのですが、これだと.sh付きで取れてしまいます。

sedで置換という手もありますが、もっと簡単な方法があります。

basename $0 .sh

これでシェルスクリプトの拡張子のみを削ったファイル名が取得できます。

実際に使割れる例(このままコピーしていただければ、使えます。)

# configファイルのファイルパスを取得
conf_file_name=basename $0 .sh.conf
conf_dir_name=dirname $0 | sed -e s/bin/config/g

echo $conf_dir_name/$conf_file_name


basename $0 .sh

で実行したシェルスクリプトの.shなしを取得し、その後ろに

.conf

を付与して感じになります。

ちなみにdirnameはsedで置換しました。

上の例を実行する上で大切なことがあります。

それは・・・

フルパスで実行してください。

例えば、

sh hoge.sh

と実行した場合、dirnameが.
となる為、うまく実行できなくなります。

シェルスクリプトに慣れていない人のハマりポイントでもあるので、

シェルを実行する時はフルパスで実行

これは覚えておきましょう!

 
 

ブログランキングに参加しています。クリックして応援していただけると嬉しいです。

人気ブログランキング
ブログランキング・にほんブログ村へ
にほんブログ村