我有一个字符串,像这样:
DayOfWeek=$(date +%A|tr -d '\n')
echo $DayOfWeek
Montag
我希望将命令的结果与字符串进行比较。像这样:
[ $DayOfWeek == "Monday" ] && echo True
但结果却随时都是假的。
这里有一些尝试:
[ "$DayOfWeek" == "Monday" ] && echo True
[ $(date +%A|tr -d '\n') == "Monday" ] && echo True
[ $(date +%A|tr -d '\n') == "Monday" ] && echo True
[ $(date +%A|tr -d '\n') == 'Monday' ] && echo True
[ "$(printf "%s" "$DayOfWeek")" == "Monday" ] && echo True
[ "$(date +%A|tr -d '\n')" == 'Monday' ] && echo True
[[ $(date +%A|tr -d '\n') == 'Monday' ]] && echo True
[[ $(date +%A|tr -d '\n') == "Monday" ]] && echo True
最后工作:
[[ $(date +%A|tr -d '\n') == $(echo -n "Montag") ]] && echo True
有人可以向我解释这种bash行为吗?使用的bash是版本4.4.19。
最好的问候,akendo
您在尝试中使用英文单词Monday
,但您的工作示例使用Montag
。我猜你猜你正在使用DE
语言环境。
您可以通过在比较中使用Montag
来解决此问题,或者如果您确实需要使用英语单词,请执行以下操作:
LC_ALL=en_US.utf8 date +%A
强制使用英语区域设置。