簡體   English   中英

條件表達式中的語法錯誤以及 Ubuntu 終端中的“then”附近

[英]Syntax error in conditional expression and near `then' in Ubuntu terminal

我只是在學習終端命令,我正在嘗試創建自己的命令,但是我遇到了以下問題

 ./myFile: line 10: syntax error in conditional expression
 ./myFile: line 11: syntax error near `then'
 ./myFile: line 11: `    then'

有我的代碼

#!/bin/bash
echo "please enter name of the folder"
read NAME1

if [[ $NAME1 ]]  
then
  echo "enter first number"
  read NUM1

  if [[ $NUM1 ]] && [[ $NUM1 -ge 0]] 
  then
    echo "enter last number"
    read NUM2

    if [[ $NUM2 ]] && [[ $NUM2 -gt $NUM ]]  
    then
      mkdir $NAME1{$NUM1..$NUM2}
    else
      echo"please enter last number to continue"
    fi
  else
    echo "please enter first number to continue"
  fi

else
  echo "please enter name of the folder to continue"
fi

首先,表達式[[ $NAME1 ]]無效,或者至少沒有按照您的想法執行。 我相信您正在嘗試確定用戶是否實際輸入了字符串。 為此,您應該測試非空字符串 ( [[ -n ${NAME1} ]] ) 或測試大於零的字符串長度 ( [[ ${#NAME1} -gt 0 ]] )。 當您測試$NUM1$NUM2時,同樣適用。

其次,在處理用戶輸入時,應注意避免測試空字符串。 這最好通過引用您的變量來實現。 例如: [[ "${NUM1}" -gt 0 ]]

第三,空間在測試中很重要。 總是在[[]]之后留一個空格。

此外, $NUM (第 15 行)未聲明,因此將評估為空字符串。 這應該在腳本中較早的地方設置。

此腳本還有許多其他方面可以改進(例如檢查數字輸入、檢查有效文件夾名稱等。但上述更改應該可以幫助您克服直接錯誤。

暫無
暫無

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

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