我需要编写一个bash脚本,它以排序顺序输出其命令行参数,每行一个。按排序顺序输出自变量
我写了这个脚本,它工作正常,但有没有其他方式?特别是不输出到文件和排序。
#!/bin/bash
for var in $*
do
echo $var >> file
done
sort file
rm file
程序的测试运行:
$ script hello goodbye zzz aa
aa
goodbye
hello
zzz
我需要编写一个bash脚本,它以排序顺序输出其命令行参数,每行一个。按排序顺序输出自变量
我写了这个脚本,它工作正常,但有没有其他方式?特别是不输出到文件和排序。
#!/bin/bash
for var in $*
do
echo $var >> file
done
sort file
rm file
程序的测试运行:
$ script hello goodbye zzz aa
aa
goodbye
hello
zzz
#!/bin/bash
for var in "[email protected]"; do
echo "$var"
done | sort
你想在引号使用[email protected]
(而不是$*
)以适应空格的参数,如
script hello "goodbye, cruel world"
该管道摆脱了临时文件的需要。
可以通过管道for循环进行排序,或者只是做
printf '%s\n' "[email protected]" | sort
我总是忘记'printf'提供的隐式循环。 – chepner 2012-07-17 17:16:02
'$ var'也需要引号,否则将在变量扩展后尝试分词和路径名扩展。 – geirha 2012-07-17 17:57:45
好点,我只是想着整条线路被整理。 – chepner 2012-07-17 18:05:34
@chepner,如何根据决定输入大小的第一个参数对下列参数进行排序? – ThisGuy 2013-12-04 14:58:03