2

Могу ли я выполнить команду Linux на моем сценарии оболочки Bash. например, как я могу выполнить ifconfig на сценарии оболочки. когда я выполняю оболочку, вывод ifconfig должен прийти на терминал. есть ли возможности. Заранее спасибо.

2 ответа2

1

Это может быть суть проблемы:

Главное, что нужно помнить, это то, что (как вульгарное приближение) "подсказка", в которой вы запускаете свои команды, является оболочкой. Когда вы запускаете сценарий в этом приглашении, он запускается как подпроцесс оболочки. Оболочка становится родительским процессом.

Или, цитируя Менделя Купера в «Руководстве по написанию сценариев 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

Более подробная информация о сценарии позволит получить лучший ответ.

0

Да, вы можете выполнять любые основные и сложные команды в оболочке или терминале.

Если вы запутались, помните: терминал = текстовая среда ввода / вывода и оболочка = интерпретатор командной строки

Вы можете обратиться по ссылке ниже, если вам нужно больше объяснений. https://askubuntu.com/questions/506510/what-is-the-difference-between-terminal-console-shell-and-command-line

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .