だから私は次のような入力を得るためにシェルスクリプトを書いてみました。
bash whichday Jan 10 2017
その入力を取得して発生した日付を印刷する必要があります。以下は私が使用したいスクリプトです。
#!/bin/bash
if [ $# -ne 3 ]
then
echo "Please enter the month day year (example: Jan 5 2002)"
else
str=\"$1" "$2" "$3\"
echo $str
date -d $str +%A
fi
しかし、これを実行するたびに、次のような結果が表示されます。
"Jan 10 2017"
date: extra operand ‘2017"’
Try 'date --help' for more information.
私がするとき
date -d "Jan 10 2017" +"%A"
コマンドラインは正しい日付(火曜日)を出力しますが、まったく同じコマンドを実行するようになっているスクリプトは機能しません。助けてください。なぜこれが起こるのか理解できません。
答え1
ただ設定
str="$1 $2 $3"
それから
date -d "$str" +'%A'
二重引用符をエスケープすると、value の一部になり、$str
解析date
できません。
str
以下を使用して変数を完全に無視することもできます$*
。
echo "$*"
date -d "$*" +'%A'