#!/bin/sh
echo "one"
read host
echo "two"
read ip
echo "three"
read oid
read oid
echo $oid $host >> logger.txt
它永远不会呼应“二”
无论我是否以任何不同的方式手动传递参数(这是为了接收 SNMP 陷阱,并且参数来了)。
编辑:这有权限等,我通过手动启动它来测试它,“一个”被回显。
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
read 实际上等待用户输入。
read host
将等待用户输入任何数据,直到他按下返回键,用户输入的任何数据都将存储在主机中。