shellscript

カレントディレクトリを取得する

PWD=`pwd | xargs basename` echo $PWD

複数起動してる Tomcat を一発で kill するワンライナー

ps ax | grep [j]ava | awk '{print $1}' | xargs kill

引数が0なら○○

if [ 0 -eq $# ] then echo 'hogehoge' fi

カウントアップするシェルスクリプト

すぐに忘れてしまうので…。 #!/bin/sh COUNT=100 MAX_COUNT=150 while [ $COUNT -lt $MAX_COUNT ] do echo "$COUNT" COUNT=`expr $COUNT + 1` done

CD/DVDドライブがマウントされているか

デバイスを /dev/hda とした場合。 if `mount | grep -q /dev/hda` then ... fi

標準エラー出力を /dev/null に書き出す

COMMAND 2> /dev/null

カレントディレクトリより一つ上のディレクトリ名を取得する

DIR_NAME=`pwd | xargs dirname` echo $DIR_NAME

"#" で始まっていない行の行頭に "###" を挿入するワンライナー

sed -e 's/^\([^#].*\)/###\1/g' FILE

第一引数が a または A なら○○

if [ "a" = $1 ] || [ "A" = $1 ] then echo "a or A" fi

親スクリプトで定義した関数を子スクリプトで実行する方法

親スクリプトで "export -f FUNCTION_NAME" する. 例: 親スクリプト: #!/bin/sh hoge () { echo "function=hoge: "$1 } echo "parent: 1" export -f hoge sh child.sh echo "parent: 5" 子スクリプト: #!/bin/sh echo "child: 2" hoge "3" echo "child: …

"not a valid identifier" とエラーになった原因

シェルスクリプトの一部を関数にして動作確認を行ったところ,次のように怒られてしまった. $ sh hoge.sh hoge.sh: line xx: `func-a`: not a valid identifier 原因は関数名に "-" を使っていたため.なるほどなるほど.

変数定義ファイルを使う

シェルスクリプトで変数定義ファイルを使ったことがなかったのでメモ. 以下のような内容で変数定義ファイルを作成すると(ファイル名は xxx とする), #$!/bin/sh HOGE=hoge PIYO=piyo シェルスクリプトで次のようにすると,変数定義ファイルに書かれた変…

ファイルが存在するなら○○

以下は,「ファイルが存在するなら削除」. [ -e /tmp/hoge ] && rm /tmp/hoge

引数の数を確認する

以下は,「引数の数が0なら」. if [ $# -eq 0 ] then ... fi