mwe.json
[
{ "eq": "$a=b^2" },
{ "eq": "$a=b**2" }
]
mwe.sh
#!/bin/bash
eq1=$( jq -r '.[0].eq' mwe.json )
eq2=$( jq -r '.[1].eq' mwe.json )
if [[ "$eq1" -eq "$eq2" ]]; then
echo "same TeX equation"
fi
错误
$./mwe.sh
./mwe.sh: line 5: [[: $a=b^2: syntax error: operand expected (error token is "$a=b^2")
mwe2.sh
#!/bin/bash
eq1=$( jq -r '.[0].eq' mwe.json )
eq2=$( jq -r '.[1].eq' mwe.json )
if [[ "'""$eq1""'" -eq "'""$eq2""'" ]]; then
echo "same equation"
fi
错误
$./mwe2.sh
./mwe2.sh: line 5: [[: '$a=b^2': syntax error: operand expected (error token is "'$a=b^2'")
您能否建议如何比较包含美元符号和其他特殊符号的两个变量?
无需两次调用jq:
#!/bin/bash
function data {
cat<<EOF
[
{ "eq": "$a=b^2" },
{ "eq": "$a=b**2" }
]
EOF
}
data | jq '.[0].eq == .[0].eq'
data | jq '.[0].eq == .[1].eq'
echo Using -e:
data | jq -e '.[0].eq == .[0].eq' > /dev/null
echo $?
data | jq -e '.[0].eq == .[1].eq' > /dev/null
echo $?
产量:
true
false
Using -e:
0
1