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 だと空文字列になってしまうのでがルートに置かれるスクリプトには使えない

2019年3月18日 · Toshimitsu Takahashi

bash で四則演算

sh で四則演算はサポートされていないので、expr を使う。bash は次のように書ける。 #!/bin/bash add=$((1 + 2)) sub=$((1 - 2)) multi=$((5 * 2)) div=$((5 / 2)) mod=$((13 % 2)) echo $add echo $sub echo $multi echo $div echo $mod を実行すると、 3 -1 10 2 1 となる。

2007年12月21日 · Toshimitsu Takahashi