2012-11-08 157 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將等待用戶輸入任何數據,直到他按下返回鍵,並且數據用戶輸入的數據將存儲在主機中。