按排序顺序输出参数

Sha*_*les 6 sorting bash

我需要编写一个bash脚本,按排序顺序打印出命令行参数,每行一个.

我写了这个脚本,它工作正常,但还有其他方法吗?特别是没有将其输出到文件和排序.

#!/bin/bash

for var in $*
do
    echo $var >> file
done

sort file
rm file
Run Code Online (Sandbox Code Playgroud)

测试运行程序:

$ script hello  goodbye zzz aa
aa
goodbye
hello
zzz
Run Code Online (Sandbox Code Playgroud)

gei*_*rha 16

您可以管道for循环进行排序,或者只是

printf '%s\n' "$@" | sort
Run Code Online (Sandbox Code Playgroud)


che*_*ner 9

#!/bin/bash

for var in "$@"; do
    echo "$var"
done | sort
Run Code Online (Sandbox Code Playgroud)

您希望$@在引号(而不是$*)中使用以容纳带空格的参数,例如

script hello "goodbye, cruel world"
Run Code Online (Sandbox Code Playgroud)

管道摆脱了临时文件的需要.