2012-11-08 113 views
0
#!/bin/sh 
echo "one" 
read host 
echo "two" 
read ip 
echo "three" 
read oid 
read oid 
echo $oid $host >> logger.txt 

它从未它对呼应“两节”Bash脚本,阅读结束脚本?

没有,如果我传递参数(这是接收SNMP陷阱和参数来)在任何不同的方式手动问题。

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

+3

'read'从标准输入中读取,并且它会阻塞,直到它接收到该输入;所以通过“结束”,你的意思是“挂起”? – ruakh

+1

你是否试图对传递给脚本的参数采取这样的行动? - 'yourscript.sh HOST_NAME IP OID OID' – Buggabill

回答

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 
+0

谢谢,这解释了我在CLI中传递参数的地方。 –

0

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