Что значит echo $? делать? [дубликат]

В моем терминале он распечатал, казалось бы, случайное число 127 . Я думаю, что он печатает значение какой-то переменной, и, чтобы проверить свои подозрения, я определил новую переменную v = 4 . Запуск echo $? снова дал мне 0 в качестве вывода.

Я запутался, так как ожидал, что 4 будет отвечать.


Из man bash :

$? Расширяется до статуса выхода последнего выполненного конвейера переднего плана.

echo $? вернет статус выхода последней команды. Вы получили 127 , то есть статус выхода последней выполненной команды, завершившейся с некоторой ошибкой (наиболее вероятно). Команды при успешном завершении выходят со статусом выхода 0 (наиболее вероятно). Последняя команда дала результат 0 , поскольку echo $ v в предыдущей строке завершился без ошибок.

Если вы выполните команду команды

  v = 4echo $ vecho $?  

Вы получите вывод как:

  4 (из echo $ v) 0 (из echo $?)  

Также попробуйте:

   trueecho $?  

Вы получите 0 .

  falseecho $?  

Вы получите 1 .

Команда true ничего не делает, просто выходит с кодом состояния 0 ; и команда false также ничего не делает, она просто завершается с кодом состояния, указывающим на сбой (т.е. с кодом состояния 1 ).


$? полезен в сценариях оболочки как способ решить, что делать, в зависимости от того, как работала предыдущая команда (проверка статуса выхода). Мы можем ожидать, что статус выхода будет 0 , когда предыдущая команда сработала (успешно завершена), в противном случае — ненулевое числовое значение.

Демо-пример:

  #!/bin/bashpatience = 3read -t "$ терпение" -p "Нажмите 'Enter', если вы используете Unix или Linux, в противном случае  нажмите 'ctrl + d' "status =" $? "if [[$ status -eq 0]] затем echo" Отлично :-) "elif [[$ status -eq 1]] затем echo" (exit status = $  status) Вы можете попробовать Unix или Linux :-) "else echo" (exit status = $ status) Вы не ответили в течение $ терпения секунд. В любом случае :-) "fiecho" 'Unix и Linux' - это вопрос/ответ  веб-сайт для операционных систем Unix и Linux » 

Вы можете спросить, как запустить сценарий оболочки bash без Unix или Linux 😉

3



Команда Echo в Linux с примерами

Обновлено

4 мин чтения

Команда echo — одна из самых простых и часто используемых в Linux. Аргументы, переданные в echo , выводятся на стандартный вывод.

echo обычно используется в сценариях оболочки для отображения сообщения или вывода результатов других команд.

echo Command #

echo — это оболочка, встроенная в Bash и большинство других популярных оболочек, таких как Zsh и Ksh. Его поведение немного отличается от оболочки к оболочке.

Существует также автономный /usr/bin/echo утилита, но обычно встроенная версия оболочки имеет приоритет. Мы рассмотрим встроенную в Bash версию echo .

Синтаксис для echo выглядит следующим образом:

  echo [-neE] [АРГУМЕНТЫ]  

  • Когда используется опция -n , завершающий символ новой строки подавляется.
  • Если -e o Если задано значение, будут интерпретироваться следующие символы с экранированием обратной косой чертой:
    • \ — отображает символ обратной косой черты.
    • a — Предупреждение (BEL)
    • b — отображает символ возврата.
    • c — запретить любой дальнейший вывод.
    • e — отображает escape-символ.
    • f — отображает символ подачи формы.
    • n — отображает новую строку.
    • r — отображает возврат каретки.
    • t — отображает горизонтальную вкладку.
    • v — отображает вертикальную вкладку.
  • -E отключает интерпретацию управляющих символов. Это значение по умолчанию.

При использовании команды echo следует учитывать несколько моментов.

  • Оболочка заменит все переменные, сопоставление подстановочных знаков и специальные символы перед передачей аргументов команде echo .
  • Хотя это и не обязательно, это необходимо рекомендуется заключать аргументы, передаваемые в echo , в двойные или одинарные кавычки.
  • При использовании одинарных кавычек '' буквальное значение каждого символа, заключенного в кавычки, будет сохранено. Переменные и команды не будут раскрыты.

echo Примеры #

В следующих примерах показано, как использовать Команда echo:

  • Отображение строки текста в стандартном выводе.

      echo Привет, мир!  
      Привет, мир!  
  • Отобразить строку текста, содержащую двойные кавычки.

    Чтобы напечатать двойные кавычки, заключите их в одинарные кавычки или экранируйте с помощью символа обратной косой черты.

      echo 'Hello "Linuxize"'  
      echo "Hello " Linuxize  ""  
      Hello "Linuxize"  
  • Отобразить строку текста, содержащего одинарные кавычки.

    Чтобы напечатать одинарные кавычки, заключите их в двойные кавычки или используйте кавычки ANSI-C.

      echo "Я пользователь Linux."  
      echo $ 'Я пользователь Linux.'  
      Я пользователь Linux.  
  • Отображать сообщение, содержащее специальные символы .

    Используйте параметр -e , чтобы включить интерпретацию escape-символов.

      echo -e "Ты ничего не знаешь, Джон Сноу.  n  t- Игритт"  
      Ты ничего не знаешь, Джон Сноу.  - Игритт  
  • Символы соответствия шаблону.

    echo может использоваться с символами сопоставления с образцом, такими как подстановочные знаки. Например, приведенная ниже команда вернет имена всех файлов .php в текущем каталоге.

      echo Файлы PHP:  * .php  
      Файлы PHP: index.php contact.php functions.php  
  • Перенаправить в файл

    Вместо отображения вывода на экране вы можете перенаправить его в файл с помощью > , >> операторы.

      echo -e 'Единственная истинная мудрость - знать, что вы ничего не знаете.   nSocrates '>>/tmp/file.txt

    Если файл file.txt не существует, команда создаст его. При использовании > файл будет перезаписан, а >> добавит вывод в файл.

    Используйте Команда cat для просмотра содержимого файла:

      cat/tmp/file.txt
      Единственная истинная мудрость - знать, что вы ничего не знаете. Сократ  
  • Отображение переменных

    echo также может отображать переменные. В следующем примере мы напечатаем имя текущего пользователя, вошедшего в систему:

      echo $ USER  
      linuxize  

    $ USER — это переменная оболочки, содержащая ваше имя пользователя.

  • Отображение вывода команды

    Используйте выражение $ (command) , чтобы включить вывод команды в аргумент echo . Следующая команда отобразит текущую дату:

      echo "Дата: $ (date +% D)"  
       Дата: 17.04.19  
  • Отображается в цвете

    Используйте escape-последовательности ANSI, чтобы изменить цвета переднего плана и фона или установить свойства текста, такие как подчеркивание и полужирный шрифт.

      echo -e " 033 [1; 37mWHITE"   echo -e " 033 [0; 30mBLACK"   echo -e " 033 [0; 34mBLUE"   echo -e " 033 [0; 32mGREEN"   echo -e » 033  [0; 36mCYAN "  echo -e"  033 [0; 31mRED "  echo -e"  033 [0; 35mPURPLE »  echo -e " 033 [0; 33mYELLOW"   echo -e " 033 [1; 30mGRAY"  

Заключение #

К настоящему времени вы должны хорошо понимать, как Команда echo работает.

Если у вас есть вопросы или отзывы, не стесняйтесь оставлять комментарий.

bash terminal
Оцените статью
clickpad.ru
Добавить комментарий