Top / シェルスクリプト
HTML convert time: 0.008 sec.

シェルスクリプト

Last-modified: 2015-09-19 (土) 12:59:30

シェルスクリプト(bash)のまとめ。色々と間違っている可能性あり

サンプル

  • カレントディレクトリのディレクトリ全てをtarで固める
    for file in `ls -1`; do tar cjf $file.tar.bz2 $file; done
  • カレントディレクトリのファイルの空白を_に変換する
    for file in *; do mv "$file" `echo $file | tr ' ' '_'`; done
  • カレントディレクトリのファイル名のAAAをBBBに置換する
    for f in *; do mv $f ${f/AAA/BBB}; done
  • カレントディレクトリの連番数字ファイル名を0詰めにする(下記例は2桁)
    for f in *; do mv "$f" $(printf %02d ${f%.*}).${f##*.}; done

言語仕様

変数

  • 定義
  • 参照
  • 変数の値を変数名として値を参照する方法
    eval echo '$'$VAR

特殊パラメータ

パラメータ内容
$$スクリプトのプロセスID
$#スクリプトに渡された引数の数
$0スクリプト名
$1,$2,,,引数の要素
$*
$@

配列

制御文

  • if文
    if [ 条件1 ]; then
        条件1の処理内容
    elif [ 条件2 ]; then
        条件2の処理内容
    else
        その他のときの処理内容
    fi
  • case文
    arg="lemon"
    case $arg in
    "apple")
    	echo "arg = apple"
    	;;
    "lemon")
    	echo "arg = lemon"
    	;;
    *)
    	echo "arg = other"
    	;;
    esac
  • foreach文
    lists=("apple" "lemon")
    for value in ${lists[@]}; do
        echo $value
    done
  • for文
    for ((i=0; $i<3; i++)); do
        echo $i
    done
  • while文
  • untile文

数値と文字列

  • 数値演算
  • 文字列演算

関数

定義方法

  • その1
    function 関数名()
    {
        処理内容
    }
  • その2
    関数名()  ※functionは無くてもOK
    {
        処理内容
    }

引数

  • 引数の渡し方
    dummy_func()
    {
    	local arg1=$1
    	local arg2=$2
    	echo "$arg1 $arg2"
    }
    
    dummy_func "apple" "lemon"

戻り値

  • return文を使った戻り値の返し方
    dummy_func()
    {
    	return 1   ※0〜255まで
    }
    
    dummy_func 
    if [ $? = 0 ]; then
    	echo "return value = 0"
    else
    	echo "return value != 0"
    fi
  • 標準出力を使った戻り値の返し方
    dummy_func()
    {
    	local arg1="apple"
    	local arg2="lemon"
    	echo "$arg1 $arg2"
    }
    
    ret=`dummy_func`
    echo $ret

デバッグ

  • デバッグ実行
    $ /bin/bash -x script.sh
  • 文法チェック
    $ /bin/bash -n script.sh