linux 如何在cshell中比较两个变量

t1qtbnec  于 2023-04-11  发布在  Linux
关注(0)|答案(1)|浏览(151)
echo $a
18.9142
echo $b
18.9593

我想做的是,如果a小于B,则回显“是”
请解释在if-else语句中何时使用“”,(),``,{},bc -l。

echo $a
18.9142
echo $b
18.9593

我尝试过的:

1.if ( "$a" < "$b") then
if: Badly formed number.

2.if (` "$a" < "$b" `) then
18.9142: Command not found.
if? echo "YES"
if? endif

3.if [` "$a" < "$b" `] then
18.9142: Command not found.
if: Expression Syntax.

4.if ["$a" < "$b"] then
18.9593]: No such file or directory.

5.if ["$a" < "$b"]; then
18.9593]: No such file or directory.

6.if (`echo "$a" < "$b" | bc -l`) then
if: Badly formed number.

7.if ( `echo "$a < $b" | bc -l` ) then

8.if [`echo "$a < $b" | bc -l`] then
[`echo "$a < $b" | bc -l`]: No match.

9.if [`echo "$a < $b" | bc -l`]; then
[`echo "$a < $b" | bc -l`]: No match.
then: Command not found.

10.if [`echo "$a < $b" | bc -l`];
[`echo "$a < $b" | bc -l`]: No match.

这些似乎都不起作用,请任何人帮助。
我想做的是,如果a小于B,然后回显“是”,请在tcsh和bash中分享方法。
请解释在if else语句中何时使用“”,(),``,{},bc -l。

brgchamk

brgchamk1#

这真的是一个评论,但我需要的空间和formmating的答案

#!/bin/csh -vx
set a=18.7
set b=19.3

if ( `echo "$a < $b" | bc -l` == 0 ) then
    echo OK
else
    echo no
endif
if ( `echo "$a < $b" | bc -l` ) then
    echo OK
else
    echo no
endif

当它在一个文件中时,无论测试中有没有== 0部分,它都能正常工作。一定要用chmod +x myTest.csh将文件标记为可执行文件(当然,要插入myTest.csh的脚本名称)
还要注意,csh支持简化的测试

if ( `echo "$a < $b" | bc -l` == 0 ) echo no

在关闭)之后允许一个命令。
现在没有时间做进一步的研究。也许这会帮助你前进,但真实的的建议是放弃CSH!搜索csh-why-not。
IHTH。

相关问题