我遇到了這個漂亮的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