请帮忙。这样做我收到错误。我怎么修理
if [ awk 'BEGIN{print 0.4*10}' > 1 -eq 1 ]; then echo YES; fi
答案 0 :(得分:7)
shell语法首先内化很棘手。花点时间意识到if
命令实际上并不需要任何特殊语法:它根据命令的退出状态做出决定。通常你会看到方括号,但它们实际上只是test
命令的别名(或多或少)。
如果您想处理awk的退出状态:
if awk 'BEGIN {n = 0.4 * 10; exit (!(n>1))}'; then echo yes; fi
如果你只想做一些数学运算:
result=$(bc <<< "(0.4 * 10) > 1")
if [[ $result = "1" ]]; then echo "YES"; fi
# or, in one step
if [[ $(bc <<< "(0.4 * 10) > 1") = "1" ]]; then echo "YES"; fi
在bash提示符下,键入help if
答案 1 :(得分:2)
您的命令有语法错误。您可能打算在awk中进行数学比较,无论如何BASH不能进行非整数数学运算。
可能是你的意思:
if [ $(awk 'BEGIN{print ( (0.4*10) > 1) }') -eq 1 ]; then echo YES; fi
YES
答案 2 :(得分:0)
这样的事情会起作用:
if [[ $(awk 'BEGIN{print 0.4*10}') > 1 ]]; then
echo YES
fi
但目前还不清楚你打算做什么。
答案 3 :(得分:0)
您不需要if
。如果计算为4,则会打印yes
,否则会打印no
。
[[ $(awk 'BEGIN{print (0.4*10) }') -eq 4 ]] && echo "yes" || echo "no"
或
[ $(awk 'BEGIN{print (0.4*10) }') -eq 4 ] && echo "yes" || echo "no"