bashスクリプト内でパスから情報を取得する
シェルでは $0 で実行したスクリプトファイルのパスが取れる。ここでスクリプトのファイル名やスクリプトのあるディレクトリパスを切り出したときはどうすればよいか。basename というコマンドを使うとファイル名切り出せる。ただ bash だとパターンマッチ抽出たどコマンドに頼らずできる。 スクリプトのファイル名 1 2 3 4 5 6 7 #!/bin/bash basefilename=${0##*/} echo $basefilename basefilenamewithoutext ${basefilename%%.*} # 拡張子を除く echo $basefilenamewithoutext ## は先頭の最長マッチ部分を削除する %% は末尾の最長マッチ部分を削除する スクリプトのディレクトリパス 1 2 3 4 5 6 #!/bin/bash basedir=${0%/*} echo $basedir cd $basedir # スクリプトのあるディレクトリに移動する % は末尾の最短マッチ部分を削除する /foo.sh だと空文字列になってしまうのでがルートに置かれるスクリプトには使えない