Linux如何排序参数

use*_*399 5 linux shell

当我想-sort在它之后运行我的参数时,我需要对我提到的所有其他参数进行排序.例

. MyScript.sh -sort Tree Apple Boolean

输出应该是

Apple 
Boolean
Tree

我试图制作一个数组并运行所有参数,但这没有用

Array=()
while (( "$#" ))
do
  Array += "$1"
  shift
done
Run Code Online (Sandbox Code Playgroud)

这也有我无法忽视的问题-sort.

小智 7

试试这个脚本:

#!/bin/bash

if [ "$1" = "-sort" ]; then
    shift;
    echo "$@" | tr ' ' '\n' | sort | tr '\n' ' ';
    echo;
else
    echo "$@";
fi
Run Code Online (Sandbox Code Playgroud)

说明:第一个if检查第一个参数是否为-sort.如果是,它会移动参数,所以-sort消失但其他参数仍然存在.然后运行参数tr,将空格分隔列表转换为换行符(sort需要),然后管道通过sort其最终打印排序列表(转换回空格分隔格式).如果第一个参数不是-sort,那么它只是按原样打印列表.