簡體   English   中英

IFS和bash代碼讀取用戶按下的輸入

[英]IFS and bash code to read enter pressed by the user

這段代碼有什么問題嗎

IFS=''
for i in `seq 1 20`; do
        sleep 1
        echo $((20-$i)) seconds till abort ... 
done

variable="dummy"
read -p "Enter to continue" -t 1 -N 1 variable
echo -e "\n"
while [ "$variable" != $'\x0a' ] 
do
read -p "Enter to continue" -t 1 -N 1 variable
echo -e "\n" 
done

錯誤為20:表達式中的語法錯誤(錯誤標記為“ 2

如果我刪除IFS ='',則倒數計時工作正常,但是帶有“輸入繼續”的部分將失敗。

建議使用IFS ='',因為我已經看到此變量是單詞邊界的定界符?

通過將IFS設置為空字符串,您僅進入循環一次,並且在循環的迭代中,變量i為20行字符串。 $(())不知道如何處理該字符串,因此它告訴您語法錯誤。 (請注意,錯誤令牌的長度為19行,但您僅注意第一行。)

如果您確實需要為腳本的其他部分操縱IFS(可能不需要!),則可以執行以下操作:

unset IFS
for i in $(seq 1 20); do
        IFS=''
        sleep 1
        echo $((20-$i)) seconds till abort ... 
done

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM