Могу ли я выполнить команду Linux на моем сценарии оболочки Bash. например, как я могу выполнить ifconfig на сценарии оболочки. когда я выполняю оболочку, вывод ifconfig должен прийти на терминал. есть ли возможности. Заранее спасибо.
2 ответа
Это может быть суть проблемы:
Главное, что нужно помнить, это то, что (как вульгарное приближение) "подсказка", в которой вы запускаете свои команды, является оболочкой. Когда вы запускаете сценарий в этом приглашении, он запускается как подпроцесс оболочки. Оболочка становится родительским процессом.
Или, цитируя Менделя Купера в «Руководстве по написанию сценариев Bash»:
Подоболочка - это отдельный экземпляр командного процессора - оболочка, которая выдает подсказку на консоли или в окне xterm. Как ваши команды интерпретируются в командной строке, так и сценарий выполняет пакетную обработку списка команд. Каждый выполняемый скрипт оболочки по сути является подпроцессом (дочерним процессом) родительской оболочки.
http://www.tldp.org/LDP/abs/html/subshells.html
Это руководство имеет отличную информацию относительно вашего вопроса.
Что это значит?
Одна из наиболее распространенных проблем при переводе командной строки в формат сценария заключается в том, что когда это сценарий, выполняемый как часть более крупной команды, сценарий должен ВОЗВРАТИТЬ значение в родительский процесс (оболочку). Если этого не произойдет, то скрипт выполняется тихо, как если бы его не было в команде оболочки.
Часто проблема такого типа может быть решена путем вывода значения или возврата значения. Иногда значения экспортируются в глобальные переменные, и вы можете создавать свои собственные. Это совсем не похоже на случай глобальных переменных, а просто приводит некоторые примеры.
Я отвечу на ваши вопросы как можно лучше с предоставленной информацией.
В. Могу ли я выполнить команду linux в моем сценарии оболочки bash?
A. Да.
В. Например, как я могу выполнить ifconfig на сценарии оболочки.
A. Вот пример (в предположении BASH):
cat NEW_NIC
#!/bin/bash
my_new_nic=enp101
echo my_new_nic
chmod 744 NEW_NIC
ifcfg NEW_NIC
В. Когда я выполняю оболочку, вывод ifconfig должен прийти на терминал.
A. Вот пример (в предположении BASH):
cat SHOW_IF
#!/bin/bash
ifcfg
chmod 744 SHOW_IF
SHOW_IF
Более подробная информация о сценарии позволит получить лучший ответ.
Да, вы можете выполнять любые основные и сложные команды в оболочке или терминале.
Если вы запутались, помните: терминал = текстовая среда ввода / вывода и оболочка = интерпретатор командной строки
Вы можете обратиться по ссылке ниже, если вам нужно больше объяснений. https://askubuntu.com/questions/506510/what-is-the-difference-between-terminal-console-shell-and-command-line