我遇到了这个漂亮的bash脚本,这是一个小小的borked。在bash中改进睡眠排序
#!/bin/bash
function f() {
sleep "$1"
echo "$1"
}
while [ -n "$1" ]
do
f "$1" &
shift
done
wait
它休眠数字给出的秒数,然后输出该数字。最低的数字首先醒来。
我在想这可以通过首先将数字除以列表中的最大数字,然后运行它并在出现时乘以最大值来改进。
这是我第一次尝试:
#!/bin/bash
declare -a to_sort
function f() {
sleep "$1"
final_var=$(echo "$1*$2"|bc)
echo "$1"
}
function max(){
for var in "[email protected]"
do
if [ "$var" -gt "$max" ] # Using the test condition
then
max="$var"
fi
done
}
echo "$1"| read -a to_sort
let max_var = max to_sort
for i in "${to_sort[@]}"
do
parsed_var=$(echo "$i/$max_var"|bc)
f parsed_var max_var &
shift
done
wait
我要去哪里错了?
...如果您想让sleeppsort更高效,我想您可能需要重新考虑这种方法... – nneonneo 2013-02-18 22:40:17
@nneonneo我试图让它更快。我知道这是一个失败的原因,但我想争取帮助我了解有关bash的更多信息。 – Pureferret 2013-02-18 22:53:01