シェル(sh)Tips
シェルのTipsと言える程の内容ではないかもしれませんがそれらしいものの備忘録です。一応、shを元に書いているのでおそらく殆どの環境では大丈夫だと思います。ただ、FreeBSDが主ですので、Linuxの方はコマンドが異なる場合があるかもしれません。知っているところでは、lineというコマンドがFreeBSDにはありませんでした。
【目次】
時間の取得はdateコマンドを使って行ないます。ここで指定しているフォーマットは4桁の年、2桁の月、2桁の日にちとなってます(例.20050808)
詳しくはマニュアルを参照してみてください。
■今日の日付をフォーマットを指定して取得する
■前日の日付をフォーマットを指定して取得する
■年月日の取得
■年月の取得
■年の取得
■時分秒の取得
詳しくはマニュアルを参照してみてください。
■今日の日付をフォーマットを指定して取得する
suffix=`date "+%Y%m%d"`
■前日の日付をフォーマットを指定して取得する
suffix=`date -v -1d "+%Y%m%d"` ~~~~~~ ↑取得時間の補正(この場合、1日前になる)
■年月日の取得
timestr_day=`date "+%Y%m%d"`
■年月の取得
timestr_month=`date "+%Y%m"`
■年の取得
timestr_year=`date "+%Y"`
■時分秒の取得
timesrt_time=`date "+%H%M%S"`
オプション引数はコマンドの後に続く"-"から始まっている文字のことです。これをシェル側で処理するにはgetoptという組み込みコマンド(Builtinコマンド)を利用して行います。ちなみに、このコマンドはcshでは利用できないらしいですのでご注意下さい(実はこれで数日、嵌りました)
たぶん良くある記述方を以下に記載しています。getoptsコマンドの後に記載している文字が受け取るオプションの文字になります。文字の後ろに':(コロン)'をつけると値(-o parameterなど)を持ったオプションという意味になり、${OPTARG}に値が格納されるようになります。以下の場合では"a"はパラメータ付きオプションで、"b"はパラメータの付かないオプションとなります。
たぶん良くある記述方を以下に記載しています。getoptsコマンドの後に記載している文字が受け取るオプションの文字になります。文字の後ろに':(コロン)'をつけると値(-o parameterなど)を持ったオプションという意味になり、${OPTARG}に値が格納されるようになります。以下の場合では"a"はパラメータ付きオプションで、"b"はパラメータの付かないオプションとなります。
while getopts a:b arg do case ${arg} in a) # パラメータありのオプション処理 arg="${OPTARG}" ;; b) # パラメータなしのオプション処理 b=1 ;; *) ~上記に該当しない条件の処理~ exit 1;; esac done
returnされた値はステータスコードとして$?変数に格納されます。関数からの出力を得たい場合はechoやprintfなどの文字を表示するコマンドを使用することで行えます。
■定義
■定義(引数指定された場合。sh:$1-$9)
■定義(文字を返す場合)
■呼び出し
■定義
function(){ ls -la return 0 }※returnした状態は$?変数に入る。
■定義(引数指定された場合。sh:$1-$9)
function(){ ls -$1 return 0 }※returnした状態は$?変数に入る。
■定義(文字を返す場合)
function(){ echo $1 return 0 }※returnした状態は$?変数に入る。
■呼び出し
function■呼び出し(引数指定)
function"a"■呼び出し(関す内でechoされた文字を代入する)
res=`functino "a"`【使用例】
isdir(){ if [ "$1" -a -d "$1" ] then return 1 else return 0 fi } isdir $1 if [ $? -eq 1 ] then echo "directory." else echo "not directory." fi