bash-скрипт для написания команд оболочки - PullRequest
0 голосов
/ 08 октября 2010

Почему некоторые команды требуют оператора echo, а другие можно просто написать без:

#!/bin/bash

aptitude upgrade

echo "mysql-server-5.1 mysql-server/root_password password $DB_PASSWORD" | debconf-set-selections

Ответы [ 2 ]

2 голосов
/ 08 октября 2010

Команды, которые подают на стандартный ввод для некоторого ввода для обработки, обычно передаются командой echo. Эхо выводит строку, предоставленную ему, на стандартный вывод, который в свою очередь дублируется на стандартном вводе с использованием канала "|". Таким образом, для команд, которые не требуют ввода от stdin или использует какой-либо другой метод ввода для обработки, можно написать без команды echo.

1 голос
/ 08 октября 2010

aptitude upgrade: upgrade является аргументом для программы aptitude. Если вы видите вывод на вашем экране, это означает, что внутри aptitude происходит "эхо" в stdout.

программы также могут быть написаны для ввода в stdin через канал "|", как во втором случае. например, программа на Python, которая принимает стандартный ввод,

import fileinput
for line in fileinput.input():
    print line

и в аргументах

import sys
file = sys.argv[1]

Комбинация этих 2 позволит программе принимать стандартный ввод или аргумент. Так будет реализовано aptitute или debconf-set-selections, в зависимости от того, на каком языке он построен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...