В общем случае передача логических значений в функции на любом языке нечитаема. например. calculate_interest 5y 4% true
. Читателю остается только гадать, что же является правдой.
Поэтому используйте перечисление:{ per_month, per_year }
. Теперь вы можете сделать calculate_interest 5y 4% per_year
. Это более читабельно.
Bash не является статически типизированным, (или строго типизированным, или вообще не имеет значительной части системы типов ), поэтому вы можете передавать множество различных значений. Одни поведут так, другие нет. Нежелательно иметь много разных ценностей, ведущих по одному и тому же пути.
Поэтому добавьте код для проверки того, что ввод является одним из двух допустимых значений. Сделайте это в начале функции, вы не хотите выручать ½ пути, делая что-то.
Итак, кто-то не последовал моему совету, и вы должны вызвать функцию, которая принимает логическое значение. Что вы можете сделать, чтобы сделать ваш код читабельным?
calculate_interest 5y 4% per_year=True
, затем используйте их. Это поможет, но не расскажет вам о значении calculate_interest 5y 4% per_year=False
. Нет; bash
не поддерживает параллелизм или многопоточность -таким образом. Подоболочки также не взаимодействуют с переменными друг друга.
Можно передавать информацию из одной подоболочки в другую, используя FIFO или временные файлы.
В качестве примера (просто для начала):
mkfifo hoppa
while true; do
curl -4 -sf ifconfig.co >> hoppa
sleep 60
done &
while : ; do
read -t1 d <> hoppa
if [ "$d" != "" ] ; then
echo '+'
ipread=$d
else
echo -n '.'
fi
echo $ipread
sleep 5
done &