我需要编写一个bash脚本,按排序顺序打印出命令行参数,每行一个。
我写了这个脚本,它工作正常,但还有其他方法吗?特别是没有将其输出到文件和排序。
#!/bin/bash
for var in $*
do
echo $var >> file
done
sort file
rm file
程序的测试运行:
$ script hello goodbye zzz aa
aa
goodbye
hello
zzz
答案 0 :(得分:14)
你可以管道for循环进行排序,或者只做
printf '%s\n' "$@" | sort
答案 1 :(得分:9)
#!/bin/bash
for var in "$@"; do
echo "$var"
done | sort
您希望在引号中使用$@
(而不是$*
)来容纳带空格的参数,例如
script hello "goodbye, cruel world"
管道无需临时文件。