对不起,如果这是一个愚蠢的问题,在一些联机帮助页上有一个明显的答案。我在那里找不到好消息。
这是一个初学者练习题,其中给出了两个非零整数,你需要编写一个脚本来打印它们的总和,差异,产品和商,每个都在一个新行上。
当然,有一种非常简单的方法可以在一行中完成这项工作,但这就是我最终要做的事情
read x
read y
printf "$(( "$x" + "$y" ))\n"
printf "$(( "$x" - "$y" ))\n"
printf "$(( "$x" * "$y" ))\n"
printf "$(( "$x" / "$y" ))\n"
虽然如果x和y为正且x大于y,这样可以正常工作,但当任何操作产生负结果时(即当x或y为负或x小于y时),我会收到错误
例如,如果x为50且y为20,则得到
70
30
1000
2
但如果x是20和y 50
70
./twon: line 3: printf: -3: invalid option
printf: usage: printf [-v var] format [arguments]
1000
0
类似的,如果我尝试负数,让x = -50和y = 20
./twon: line 3: printf: -3: invalid option
printf: usage: printf [-v var] format [arguments]
./twon: line 4: printf: -7: invalid option
printf: usage: printf [-v var] format [arguments]
./twon: line 5: printf: -1: invalid option
printf: usage: printf [-v var] format [arguments]
./twon: line 6: printf: -2: invalid option
printf: usage: printf [-v var] format [arguments]
但是,如果我用printf
替换echo -e
命令
read x
read y
echo -e "$(( "$x" + "$y" ))"
echo -e "$(( "$x" - "$y" ))"
echo -e "$(( "$x" * "$y" ))"
echo -e "$(( "$x" / "$y" ))"
一切正常,我得到任何一对整数的所有操作结果。
我在这里错过了什么?
请改用:
printf '%s\n' "$(( x / y ))"