Shell
SH,不能使平等工作
我試圖讓一個簡單的 if 語句起作用。
if [ $sip1 = 0 ] ; then do stuff ; fi
我的下面
sh
一行顯示了我正在處理的鬥爭。我無法讓它確認我儲存為整數的 0,如果我將它與字元串進行比較,它會說它不匹配。
# if [ `expr $sip1` ] ; then echo hi > fi hi # if [ `expr $sip1 = 1` ] ; then echo hi; fi hi # if [ `expr $sip1 = 2` ] ; then echo hi; fi hi # expr $sip1 0 # if [ `expr $sip1 + 0 = 2` ] ; echo hi > # if [ `expr $sip1 + 0 = 2` ] ; then echo hi > fi expr: non-numeric argument # echo $sip1 0 # if [ $sip1 = "0" ] ; then echo hi ; fi # if [ $sip1 = '0' ] ; then echo hi ; fi # echo ">$sip1<" <0
echo
您發布的內容:# echo ">$sip1<" <0
表示變數的值
sip1
不是0
,正如您可能預期的那樣,而是0
後跟一個輸入符($'0\r'
在 Bash 語法中):$ zero_cr=$'0\r' $ if [ "$zero_cr" = "0" ] ; then echo hi ; fi $ zero='0' $ if [ "$zero" = "0" ] ; then echo hi ; fi hi
根據您填充變數的具體方式,考慮從中刪除輸入符:
- 如果您的程式碼類似於
sip1=$(command...)
,那麼sip1=$(command... | tr -d '\r')
應該去掉任何雜散的輸入符,讓您的測試成功。- 或者,假設是 Bash,刪除尾隨輸入符似乎可以使用 syntax
${foo%$'\r'}
,因此sip1=${sip1%$'\r'}
應該清除尾隨輸入的變數。