2016-11-30 56 views
0

我試圖寫一個shell腳本來收集用戶輸入後追加到一個文本文件中。 這裏是我與合作:收集用戶輸入到一個變量被附加到文件

note_file=~/project_2/file 
loop_test=y 
while test "$loop_test" = "y" 
do 
    clear 
    tput cup 1 4; echo "  Note Sheet Addition  " 
    tput cup 2 4; echo "=============================" 
    tput cup 4 4; echo "Note: " 
    tput cup 5 4; echo "Add Another? (Y)es or (Q)uit: " 
    tput cup 4 10; read note 
if test $note = "q" 
then 
clear; exit 
fi 
if test "$note" != "" 
then 
    echo "$note:" >> $note_file 
fi 
    tput cup 5 33; read hoop_test 
if [ "$hoop_test" = "q" ] 
then 
    clear; exit 
fi 
done 

我現在的問題是,我想保存在筆記可變整個句子,而不是隻是一個單一的arguement。 即注=「這是一個註解或其他一些普通的文字東西」你追加到每個note(可能是故意的,說不上來),你的整個問題造成較明顯hooploop拼寫問題

+1

我不知道你的意思:不'讀note'保持全行中輸入一個字符串,即包括空間? – Evert

+0

除了明顯的'read hoop_test'而不是'read loop_test'外, –

回答

0

其他,和:當你進入比一個單詞更錯誤的是你的失敗報價您使用可變test時,如

if test "${note,,}" = "q" ## always quote variables in test 

通知的"..."(不帶引號,這是test some words = "q"它提示錯誤:test: too many arguments - 聽起來很熟悉)正確引用是test "some words" = "q"這是罰款。

(參數擴展與,,只是note內容轉換爲小寫處理Qq表示退出)

除了這些問題(需要明確在年底復位loop_testy ),你的腳本能正常工作:

#!/bin/bash 

note_file=~/project_2/file 
note="" 
loop_test=y 

while test "$loop_test" = "y" 
do 
    clear 
    tput cup 1 4; echo "  Note Sheet Addition  " 
    tput cup 2 4; echo "=============================" 
    tput cup 4 4; echo "Note: " 
    tput cup 5 4; echo "Add Another? (Y)es or (Q)uit: " 
    tput cup 4 10; read note 

    if test "${note,,}" = "q" ## always quote variables in test 
    then 
     clear; exit 
    fi 

    if test "$note" != "" 
    then 
     echo "$note" >> "$note_file" 
    fi 

    tput cup 5 34; read loop_test 

    if [ "${loop_test,,}" = "q" ] 
    then 
     clear; exit 
    else 
     loop_test=y 
    fi 
done 
相關問題