1
如果用戶輸入包含一個單引號,如猛砸如果測試中斷,如果在用戶輸入的至少一個單引號
$ echo "Hello my name Foo I'm 18" | ./test.sh
它失敗,錯誤syntax error: operand expected (error token is "'")
代碼:
#!/bin/sh
while read line
do
str=$line
for ((i = 0; i < ${#str}; i++))
do
if [[ "${str:$i:1}" -gt 4 ]] <-- fails
then
echo 'foo'
elif [[ "${str:$i:1}" -lt 4 ]] <--- fails
then
echo 'bar'
else
echo 'not a number'
fi
done
done
如何我可以讓我的代碼在用戶鍵入撇號/單引號時工作嗎?
你是指「*精確*單引號」或「*至少*單引號」? – Jubobs
@Jubobs糾正了,謝謝 – tgun926
問題是'-gt'和'-lt'需要整型參數,如果參數是一個有效的標識符(例如'H','e'等),它會被擴展爲參數。在大多數情況下,這些參數不存在並且評估爲0(因此大量的'bar'輸出。''',但不是一個有效的參數名稱,所以你會得到一個錯誤。首先將字符串與整數進行比較,但是?我認爲你需要解釋你正在努力完成的任務,以便正確解決它。 – chepner