Edited at

シェルスで日付を引数に指定_メモ

More than 3 years have passed since last update.


やりたいこと

特定月のデータを出力するシェルスクリプトを作成。

特定月の指定方法:

 (1)コマンドの後ろに、年月指定する

 (2)日付指定なしの場合、自動的に先月を指定する


実行イメージ

(1)年月指定

 ./test.sh 201608

(2)指定なし、先月になる

 ./test.sh


シェルの書き方

test.sh

#!/bin/sh

//引数1つもない場合、1ヶ月前の年月を出す
//今月の年月出力したい場合: DATE=`date "+%Y%m"`

if [ $# -ne 1 ]; then

DATE=`date -d '1 month ago' "+%Y%m"`

//引数1つあれば、指定の引数のを利用

else

DATE=$1

fi

//データの中身を確認
echo $DATE

参考:シェルスクリプト-先月の月を取得する


今回困ったクォーテーションについて

今回のスクリプトで、シングル/ダブルクォーテーションの効果は一緒ですが、

状況によって、どっちが使えない場合があります。

シングル/ダブルクォーテーションの違いは、特殊文字の扱い方法:

(1) "" ダブルクォーテーション

 「$」「`」「\」については、クォートされません。特殊文字として扱われます。

(2) ' ' シングルクォーテーション

 「$」「`」「\」は普通の文字列として扱われます。

参考例:シェルスクリプトとクォーテーションについて