Я натолкнулся на этот отличный скрипт bash, который немного укусил.Улучшение сортировки сна в bash
#!/bin/bash
function f() {
sleep "$1"
echo "$1"
}
while [ -n "$1" ]
do
f "$1" &
shift
done
wait
Он спит в течение секунд, заданных номером, затем выводит это число. Самые низкие числа сначала пробуждаются.
Я думал, что его можно улучшить, сначала разделив числа на максимальное число в списке, затем пропустив его и умножив на max при его выходе.
Вот моя первая попытка:
#!/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
Где я буду неправильно?
... если вы пытаетесь сделать sleepsort более эффективным, я думаю, вам может потребоваться переосмыслить подход ... – nneonneo
@nneonneo Я пытаюсь сделать это быстрее. Я знаю, что это потерянное дело, но я хочу сразиться, чтобы помочь мне узнать больше о bash. – Pureferret