回答:
$> cat ./deploymLog.sh
#!/bin/bash
name=$1
log_file="Logone.txt"
if [[ -n "$name" ]]; then
echo "$1=$( date +%s )" >> ${log_file}
else
echo "argument error"
fi
コマンドラインからの最初の引数は、位置パラメータで見つけることができます$1
。空でない[[ -n "$name" ]]
かどうかをテストします$name
。
date +%s
現在のタイムスタンプをUnix時間で返します。>>
オペレータは、ファイル内の既存のデータに付加することで、ファイルへの書き込みに使用されます。
$> ./deploymLog.sh tt
$> cat Logone.txt
tt=1329810941
$> ./deploymLog.sh rr
$> cat Logone.txt
tt=1329810941
rr=1329810953
より読みやすいタイムスタンプについては、date
引数で遊ぶことができます。
シェルコマンドライン引数には$1
、$n
(最初の)、(n番目)、または$*
(すべての引数)を介してアクセスできるため、スクリプトを開始する必要があります。
#!/bin/bash
if [ $# -ne 1 ]; then
echo $0: usage: myscript name
exit 1
fi
name=$1
これで、スクリプトからname引数にとしてアクセスできます$name
。
タイムスタンプを取得するには、date(1)
コマンドを使用してフォーマット指定子を指定し、目的のフォーマットを生成します。
now=$(date +%Y%m%d%H%M%S)
現在$now
、現在の日付と時刻が含まれています。
したがって、次のようにログファイルを作成できます。
logfile=/path/to/log/file/mylogfile.$now
echo "[$name]=[$now]" >> $logfile
シェル関数を使用すると、メッセージをログに記録する方が簡単です。
function logit
{
now=$(date +%Y%m%d%H%M%S)
echo "$now: $*" >> $logfile
}
シェル関数は、スクリプトと同じ方法で($1
などを介して)独自の引数にアクセスすることに注意してください。
したがって、最初のスクリプトは次のようになります。
#!/bin/bash
function logit
{
now=$(date +%Y%m%d%H%M%S)
echo "$now: $*" >> $logfile
}
if [ $# -ne 1 ]; then
echo $0: usage: myscript name
exit 1
fi
name=$1
now=$(date +%Y%m%d%H%M%S)
logfile=/path/to/log/file/mylogfile.$now
logit name = $name
(ログファイルは指定した正確な形式ではないことに注意してください。各行の先頭にタイムスタンプがあるより良い形式です)。
#!/bin/bash
name=$1
echo "$(date '+%Y%m%d-%H:%M:%S') => " $name >> x.log
「bash deploymLog.sh何でも」を実行すると、x.logが
20120220-23:53:50 => whatever
name=$1
。文字列 'name'のみをそのまま出力するため、変数$ nameは使用されません。
name="$1"
[[ -n "$name" ]]
部品が何をしているかを知るのに役立つでしょう。