例如,如果我想编写一个将字符串作为参数的脚本,并且我希望将它们插入到数组array_of_args
,然后我想对此数组进行排序并进行制作排序数组。
我该怎么办?
我想以下一种方式对数组进行排序(并将其打印到stdout):
array_of_args=("$@")
# sort_array=()
# i=0
for string in "${array_of_args[@]}"; do
echo "${string}"
done | sort
但我不知道如何将排序值插入数组(到sort_array
)..
答案 0 :(得分:1)
您可以使用以下脚本对可能包含空格,换行符,glob字符或任何其他特殊字符的输入参数进行排序:
#!/usr/bin/env bash
local args=("$@") # create an array of arguments
local sarr=() # initialise an array for sorted arguments
# use printf '%s\0' "${args[@]}" | sort -z to print each argument delimited
# by NUL character and sort it
# iterate through sorted arguments and add it in sorted array
if (( $# )); then
while IFS= read -rd '' el; do
sarr+=("$el")
done < <(printf '%s\0' "${args[@]}" | sort -z)
fi
# examine sorted array
declare -p sarr