[英]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.