0
#!/bin/sh
echo "one"
read host
echo "two"
read ip
echo "three"
read oid
read oid
echo $oid $host >> logger.txt

它永远不会呼应“二”

无论我是否以任何不同的方式手动传递参数(这是为了接收 SNMP 陷阱,并且参数来了)。

编辑:这有权限等,我通过手动启动它来测试它,“一个”被回显。

4

2 回答 2

4

read等待来自 STDIN 的输入。

如果您不手动插入任何输入(在交互式终端中),或者您不提供来自 STDIN 的任何输入,如下所示:

echo -e "my_host\n192.168.1.100\nfoo\nbar" | ./myscript

它会挂起等待输入

在示例\n中是换行符。

如果要访问参数,请不要使用read,而是使用 $1...$n 变量。

./myscript my_host 192.168.1.100 foo

你需要这个:

#!/bin/sh
host=$1
ip=$2
oid=$3
echo $oid $host >> logger.txt
于 2012-11-08T16:17:04.997 回答
0

read 实际上等待用户输入。 read host将等待用户输入任何数据,直到他按下返回键,用户输入的任何数据都将存储在主机中。

于 2012-11-08T16:20:54.470 回答