我正在学习shell编程。我检查了let命令。我试图在回声中使用它,就像我们使用expr一样,但我不明白我怎么可能这样做
num1=30
num2=20
echo "Sum is `let $num1 + $num2` "
答案 0 :(得分:0)
是的,它不适用于echo,只适用于作业:
let a=1+2
echo $a
3
尝试:
let a=$num1+$num2 && echo "Sum is $a"
或更容易:
echo "Sum is $((num1+num2))"
echo "Sum is $(($num1+$num2))"
答案 1 :(得分:0)
let
,expr
和反引号已逐步停止使用。他们仍然在那里你可以使用它们,但现在有更容易,更方便和更安全的结构使用:
let
可能会被(( ... ))
expr
可能会被$(( ... ))
反引号可以由$( ... )
替换。这些更好地嵌套,引用工作直观。
因此,考虑到这一点,您的脚本可能会被重写
#!/bin/sh
num1=30
num2=20
printf 'Sum is %d\n' "$(( num1 + num2 ))"
或者,如果您乐意使用echo
输出变量字符串:
echo "Sum is $(( num1 + num2 ))"
而不是printf
的最后一行。
答案 2 :(得分:0)
首先:我们在谈论哪个shell?您的问题标记为 shell ,它通常引用Posix shell,并且没有let
。
其次,bash和Zsh确实有,但是(正如你可以通过尝试一样轻松看到),该命令不会在标准输出上打印任何内容,因此let 4711
将始终被空字符串替换