テキストファイルでT + 2を使用して日付(T)を更新するシェルスクリプト

テキストファイルでT + 2を使用して日付(T)を更新するシェルスクリプト

たとえば、DD-Mmm-YYYY形式の日付がテキストファイルの4番目の場所に表示された場合は、日付TをT + 2に更新する必要があります。木曜日または金曜日に日付が間違っている場合は、日付をT + 4に置き換える必要があります。週末は無視してください。

スクリプトを試しましたが、if条件は機能しません。

#!/bin/sh
if [ $# -ne 1 ]
then echo "Usage: read.sh filename";
exit 1;
fi

while read line
 do
  echo $line
 olddate=$(echo $line | cut -d, -f4)
echo "olddate $olddate"
echo $(date -d $olddate +%a)
if [ "date -d $olddate +%a" = Thu ] || [ "date -d $olddate +%a" = Fri ]; then
newdate=$(date +%d-%b-%Y -d "$olddate 4 day")
else
newdate=$(date +%d-%b-%Y -d "$olddate 2 day")
fi
echo "newdate $newdate"
record=$(echo $line | sed "s|${olddate}|${newdate}|")
echo "new record $record"
done < $1

ベストアンサー1

2つの比較に対して常にfalseで比較される2つの文字列を指定したので、これをコマンドの置き換えに置き換える必要があります。

if [ "date -d $olddate +%a" = Thu ] || [ "date -d $olddate +%a" = Fri ]; then
    newdate=$(date +%d-%b-%Y -d "$olddate 4 day")
else
    newdate=$(date +%d-%b-%Y -d "$olddate 2 day")
fi

つまり

today="$(date -d $olddate +%a)"
if [ "$today" = Thu ] || [ "$today" = Fri ]; then
    newdate=$(date +%d-%b-%Y -d "$olddate 4 day")
else
    newdate=$(date +%d-%b-%Y -d "$olddate 2 day")
fi

おすすめ記事