プロジェクト

全般

プロフィール

Bashシェルスクリプティング

シェル構文

for文

数値範囲

~$ for value in {0..10}; do echo $value; done
0
1
:
10
~$

~$ for suffix in {01..04}; do echo $suffix; done
01
02
03
04
~$

ファイル名・パス名操作

パス名からファイル名を取り出し(最後の'/'より以降の文字列)

basename
~$ basename /path/to/alfa.omega
alfa.omega
~$
文字列置換

前方一致最長マッチ

~$ f=/path/to/alfa.omega
~$ echo ${f##*/}
alfa.omega
~$

パス名からディレクトリ名を取り出し(最後の'/'の前までの文字列)

dirname
~$ dirname /path/to/alfa.omega
/path/to
~$
文字列置換

後方一致最短マッチ

~$ f=/path/to/alfa.omega
~$ echo ${f%/*}
/path/to
~$

パス名から拡張子を取り出し(最後の'.'より後ろの文字列)

~$ f=/path/to/alfa.omega
~$ echo ${f##*.}
omega
~$

パス名から拡張子を除いたファイル名(基底名)を取り出し

~$ f=/path/to/alfa.omega
~$ basename $f .omega
alfa
~$

ファイルの存在

実行可能なファイルの存在

[[ -x file ]]

ディレクトリ操作

ディレクトリの取得

実行スクリプトのディレクトリを取得

$(cd $(dirname $0); pwd)
  • サブシェルで実行するので、続くシェルスクリプトのカレントディレクトリは元のまま

ディレクトリの存在を確認

if [[ -d $dir ]]; then
    echo "$dir is a directory." 
else
    echo "$dir is NOT a directory." 
fi

権限

実行権限

root権限で実行されているかを判定

  if [[ ${EUID}:-${UID}} != 0 ]]; then
    echo "root accessibility is required for running this script" 
  fi