写一个Bash shell脚本“order.sh”,它接受两个整数参数“a”和“b”,并打印出适当的关系“a< b“,”a == b“或”a> b“(用”a“和”b“代替它们的值)。
代码:
#!/bin/bash
echo -n "enter the first number:"; read x
echo -n " enter the second number:"; read y
if ["$x " -lt "$y"]
then
echo "$x < $y"
else
echo"$y < $x"
if [ "$x" -eq "$y"]
then
echo " $x == $y "
fi
我无法编译他的代码,因为它失败并说“/ bin / sh:make command not found” 谁能告诉我这意味着什么?我是shell脚本的新手,我不知道是什么问题......
答案 0 :(得分:2)
我无法编译他的代码,因为它失败并说“/ bin / sh:make命令未找到”有人能告诉我这意味着什么吗?我是shell脚本的新手,我不知道是什么问题......
该陈述中的几个问题:
make
命令。您的make
上没有PATH
命令。但这没关系,因为你不需要make
这里您的脚本存在语法错误,例如:
if ["$x " -lt "$y"]
您需要在[
之后和]
之前添加空格,如下所示:
if [ "$x " -lt "$y" ]
其他问题:
if-elif-else
if
但只有1关闭fi
其他一些提示:
((...))
代替[...]
。echo -n; read
代替read -p
:它是一个命令而不是两个,echo
的标志不可移植,因此最好避免使用它们if-elif-else
的内容以使脚本更易于阅读应用更正和改进:
#!/usr/bin/env bash
read -p "enter the first number: "
read -p "enter the second number: "
if ((x < y)); then
echo "$x < $y"
elif ((x > y)); then
echo "$y < $x"
else
echo "$x == $y"
fi
答案 1 :(得分:0)
您应该使用/usr/bin/env
来查找bash
。我想你还想要一个elif
(以及一个else
- 你当前的一个错过fi
并且不会超过测试,你应该使用{{ 1}}和[[
(你错过了]]
的空格)。像,
echo"$y < $x"
我测试过,并按照您的预期进行测试。我建议你看7.02. More advanced if usage - Bash Beginner's Guide