Обратите внимание, что при программировании оболочки команда return
используется для передачи статуса функции, а не значения . Значения передаются через стандартный ввод и стандартный вывод. Это означает, что отладочные/подробные сообщения должны выводиться на stderr :
roll_dice() {
local range=6
local sum=0
# add 2 random numbers
for i in {1..2}; do
(( sum += (RANDOM % range) + 1 ))
done
# "diagnostic" output to stderr
echo "sum is $sum" >&2
# values returned on stdout
echo "$sum"
}
Тогда вы
play_game() {
# first throw
# capture the value using command substitution
sum=$( roll_dice )
Если вы хотите сбросить диагностический вывод:
sum=$( roll_dice 2>/dev/null )
Примечания:
$
не требуется для переменных Тем не менее, весь раздел на моем sda6 немного перепозиционирован, извините за отсутствие лучшего термина. Мое долгое отчаяние оплачено, потому что нет фактической потери данных. Просто все важные файлы (и/
)перемещаются в cwd, когда я делаю обновление, насколько я это помню.
Я надеюсь, что этот вопрос останется открытым, ожидая некоторой информации от сообщества. Неясен даже главный триггер такого рода сбоев. Я попытался скопировать /
с живого компакт-диска, это не сделает раздел загрузочным.