bash脚本编写shell命令

时间:2010-10-08 03:25:11

标签: linux bash

为什么有些命令需要echo语句,但其他命令可以简单地写入:

#!/bin/bash

aptitude upgrade

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

2 个答案:

答案 0 :(得分:2)

以stdin为一些输入进行处理的命令通常由echo命令提供。 Echo转储在stdout上提供给它的字符串,而stdout又使用管道“|”在stdin上复制。 因此,对于不需要从stdin输入或使用其他一些输入方法进行处理的命令,可以在没有echo命令的情况下编写。

答案 1 :(得分:1)

aptitude upgradeupgradeaptitude计划的参数。如果您在屏幕上看到输出,则意味着在aptitude内部,它会对stdout做一些“回应”。

也可以编写程序来通过管道“|”来接收stdin,就像你的第二种情况一样。例如,Python中的一个程序,它接受stdin,

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

并接受参数

import sys
file = sys.argv[1]

这两个组合将使程序能够接受stdin或参数。这将是aptitutedebconf-set-selections的实施方式,具体取决于其构建的语言。