Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » Подстановка в Bash

Модерирует : lynx, Crash_Master, dg, emx, ShriEkeR

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

Alexander70

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
#!/bin/bash
 
i=0
while [ $((i+=1)) -le 5 ]
do
  echo $i $?
done
echo $i $?
 

Почему последняя подстановка $? выводит ноль?
-Ведь последней командой работы цикла д.б. test, которая возвращает единицу!

Всего записей: 36 | Зарегистр. 02-01-2017 | Отправлено: 11:08 03-03-2017
vlary



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexander70
Блин, да откуда же такие как ты берутся?
Ты читать и думать умеешь, или только писать?
UNIX Shell: sh, bash, zsh; Coreutils и ко.; sed, awk, perl;

----------
Заслуженный SCOтовод, почетный SUNтехник и любитель Кошек

Всего записей: 17278 | Зарегистр. 13-06-2007 | Отправлено: 12:17 03-03-2017
Alexander70

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Дорогой Vlary, Вы уподобились преподавателю, который не принимает чертежи, говоря что в них ошибка, но не показывая ошибку с нескрываемым злорадством предлагает прочитать учебник в котором "всё расписано".

Всего записей: 36 | Зарегистр. 02-01-2017 | Отправлено: 13:29 03-03-2017
karavan



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Alexander70
Все просто.
Если ты не нашел в себе сил найти тему, где оказывается помощь по шелл-скриптам, то выразить тебе презрение - это как надавать пинков тому, кто сорит где попало.

Всего записей: 1962 | Зарегистр. 02-12-2011 | Отправлено: 14:17 03-03-2017
Sadok

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Alexander70
$? - это exit status. скрипт нормально завершился - вот и 0

Всего записей: 1340 | Зарегистр. 04-01-2003 | Отправлено: 15:00 03-03-2017
Alexander70

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sadok
Непонятна последовательность установки этого статуса для while

Код:
i=1
while [ $((i+=1)) -le 5 ]
do
  echo $i $?
  false
done
echo $i $? # Выводит 1, так как последняя команда тела была false
 
i=10
false # Попытка получить 1 для случая пропуска цикла
while [ $((i+=1)) -le 5 ]
do
  echo $i $?
done
echo $i $? # А здесь выводит ноль, хотя входа не было, но команда test отработала i+=1 стало 11
 
i=10 ; [ $((i+=1)) -le 5 ] ; echo $? # Пример срабатывания test без while и выводится 1.
 

Всего записей: 36 | Зарегистр. 02-01-2017 | Отправлено: 15:21 03-03-2017
s800



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexander70 Хорош трепаться  не превращаем форум в помойку продолжаем тут  
UNIX Shell: sh, bash, zsh; Coreutils и ко.; sed, awk, perl;
модератор закрой тему  


----------
Самый хороший учитель в жизни — опыт. Берет, правда, дорого, но объясняет доходчиво.

Всего записей: 1684 | Зарегистр. 21-02-2005 | Отправлено: 13:33 05-03-2017 | Исправлено: s800, 13:35 05-03-2017
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » Подстановка в Bash


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru