问题描述
#!/bin/bash
today=$(date +'%Y-%m-%d')
date_in_config=$(cat config.json | jq ".date")
echo $date_in_config
echo $today
if [ $date_in_config == $today ];then
echo "Same date"
else
echo "different"
fi
config.json
{
"date": "2021-03-24","session": "0"
}
"2021-03-24"
2021-03-24
different
我做错了什么?
解决方法
显然您已经发现问题所在:对于 Bash(以及我能想到的任何其他编程语言),"x"
与 x
不同。
-
将双引号放在
today
中:today=$(date +'"%Y-%m-%d"')
-
或者在检索JSON信息时去掉引号:
date_in_config=$(jq -r ".date" < config.json)
记住引用你的变量扩展,正如 Shellcheck 会告诉你的那样。还要去掉 ==
bashism(可选,为了便携性)。
[ "$date_in_config" = "$today" ]