2016-02-11 168 views
1

我有一個問題。我需要閱讀用戶輸入,但我需要用戶輸入4行。每次用戶按下輸入它終止讀取命令,所以我沒有讀取命令4次(不知道這是否正確) - 我需要幫助。 另外我如何輸出用戶的輸入到文件?而且輸出也需要4條線。請看我的劇本。 我感謝任何幫助。Shell腳本 - 從用戶輸入4行

1 #!/bin/bash 


2 #Displaying user name, host name, time, and date 

3 Time=`date +%r` 
4 Date=`date +%m/%d/%Y` 
5 echo "$USER is running this script on $HOST at $Time on $Date:" 
6 echo"" 
7 echo "Please enter 4 lines of text: " 
8 read line1 
9 read line2 
10 read line3 
11 read line4 
12 echo "I'm now putting the four lines you entered into a text file called \"mylines.txt\"..." 
13 echo $line1\n $line2\n $line3 \n$line4 > lines.txt 
14 echo"" 
15 echo "The lines you entered were:\n$line1\n$line2\n$line3\n$line4" 
16 echo"" 
+0

重複'read'命令就可以了。對於寫入文件,使用'echo -e「$ line1 \ n $ line2 \ n ...」> lines.txt'(不含空格)或重複'echo $ 1> lines.txt','echo $ line2 >>行.txt等 – jofel

回答

2

要閱讀4條線,你可以使用一個循環,並將其存儲在一個數組:

#!/bin/bash 

lines=() 
echo "Please enter 4 lines of text: " 
for ((i=1; i<=4; i++)); do 
    IFS= read -p "Enter line $i: " -r line && lines+=("$line") 
done 

然後進行打印,並將其重定向:

printf "%s\n" "${lines[@]}" > lines.txt 
+0

當我嘗試運行它時,它會告訴我語法錯誤:「(」unexpectedly for'lines =()' –

+0

您可能不使用'bash'來執行它。使用'bash。/ script.sh' – anubhava

+0

所以我無法運行它作爲'./ script.txt'?因爲這是我的教授想要它做的 –

1

我不知道,如果一個得到你想要的... 但看到這個和平的代碼

#!/bin/bash 

myfile="file" 

echo "a line im my file" > $myfile 
echo "now a erased my file and create another with the same name" > $myfile 
echo "now I'm writing at the end of my file" >> $myfile 
echo " 



now I put some lines in the end of my file" >> $myfile 

如果你想要的是把一些行到你的文件,你可以這樣做:

echo $line1 > lines.txt 
echo " 



" + $line2 >> lines.txt 
echo " 



" + $line3 >> lines.txt 
echo " 



" + $line4 >> lines.txt 

如果它只是,這種高度重視和做;)