为什么这个* normal *字符串比较在bash中失败了?

问题描述 投票:1回答:1

我有一个字符串,像这样:

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

bash string-comparison
1个回答
1
投票

您在尝试中使用英文单词Monday,但您的工作示例使用Montag。我猜你猜你正在使用DE语言环境。

您可以通过在比较中使用Montag来解决此问题,或者如果您确实需要使用英语单词,请执行以下操作:

LC_ALL=en_US.utf8 date +%A

强制使用英语区域设置。

© www.soinside.com 2019 - 2024. All rights reserved.