unixshell脚本中的输入排序
我正在尝试编写一个Unix Shell脚本,当执行该脚本时,它要求用户输入4个数字,然后脚本对它们进行数字排序并打印出来 我该怎么做 谢谢你的帮助 Andy您可以使用“sort”实用程序,它从标准输入中读取数据并按字典顺序对每一行进行排序 例如,您可以检查:unixshell脚本中的输入排序,shell,unix,sorting,Shell,Unix,Sorting,我正在尝试编写一个Unix Shell脚本,当执行该脚本时,它要求用户输入4个数字,然后脚本对它们进行数字排序并打印出来 我该怎么做 谢谢你的帮助 Andy您可以使用“sort”实用程序,它从标准输入中读取数据并按字典顺序对每一行进行排序 例如,您可以检查: echo -e "1\n6\n2\n3" | sort -n 哪些产出: 1 2 3 6 只需在单独的一行中输出每个数字,并将其进行排序假设您的输入位于$a,$b,$c,$d中,您就可以这样做 printf "%s\n%s\n%s\n%
echo -e "1\n6\n2\n3" | sort -n
哪些产出:
1
2
3
6
只需在单独的一行中输出每个数字,并将其进行排序假设您的输入位于
$a
,$b
,$c
,$d
中,您就可以这样做
printf "%s\n%s\n%s\n%s\n" $a $b $c $d | sort
您需要读取这些值,然后将它们回显到排序程序
echo -n "Enter 1st number: "
read a junk
echo -n "Enter 2nd number: "
read b junk
echo -n "Enter 3rd number: "
read c junk
echo -n "Enter 4th number: "
read d junk
{ echo $a; echo $b; echo $c; echo $d; } | sort -n
这里唯一的问题是用于在echo
命令后抑制换行的符号。有两种符号-不同的系统使用不同的符号。较旧的符号是所示的echo-n
。较新的符号是:
echo "Enter Nth number: \c"
那么,您需要使用哪个取决于您的系统
“junk”变量收集输入行中第一个单词之后的任何额外单词。这是一种偏执狂,但意味着如果用户键入'12 abc',那么单字母变量只得到'12',而不是其余的。该代码不验证用户是否输入了数字。您可以编写一个函数来实现这一点,并使用它4次-它还可以接受提示字符串并返回一个数字
请注意,如果您使用bash
,则read
命令的功能更强大,并且还可以进行提示,从而避免了echo
符号在read
中不可移植(除了bash
)符号的棘手问题。除了echo
符号外,所显示的代码可移植到Bourne shell第7版(或第7版)UNIX(其中echo
不是shell内置的,它使用-n
选项)和衍生工具(Korn、Bash、POSIX等)。另一种方式
read -p "Enter 1st number: " a
read -p "Enter 2nd number: " b
read -p "Enter 3rd number: " c
read -p "Enter 4th number: " d
printf "%s\n" $a $b $c $d | sort
您应该提到sort的
-n
选项,因为问题是关于数字排序的。任务是编写一个简单的排序例程,还是可以使用sort
实用程序?到目前为止你试过什么?虽然现在问这个问题有点晚了。谢谢,是的,丹尼斯。我一直在做这个作业,有点困惑,但现在没事了:-)你也可以写printf“%s\n”$a$b$c$d…
——printf会重复格式字符串以获取多余的内容arguments@glenn谢谢,我不知道。我一直在使用C中的printf函数语法:)好的,Jonathan,非常感谢,伙计。它在我的系统中运行得非常好:-)