在下面提到的代碼中, if [[ $Char == [AZ] -o $Char == [az] ]] 行顯示以下錯誤
symbol.sh:第 2 行:條件運算式中的語法錯誤
symbol.sh:第 2 行:“-o”附近的語法錯誤
read -p "Enter the Character " Char
if [[ $Char == [A-Z] -o $Char == [a-z] ]]
then
echo "The Character entered is an ALPHABET"
elif [[ $Char == [0-9] ]]
then
echo "The Character entered is a NUMBER"
else
echo "The Character entered is a Special Symbol"
fi
我嘗試以另一種方式進行操作,并且效果很好。
read -p "Enter the Character " Char
if [[ $Char == [a-z] ]]
then
echo "The Character entered is an ALPHABET"
elif [[ $Char == [A-Z] ]]
then
echo "The Character entered is an ALPHABET"
elif [[ $Char == [0-9] ]]
then
echo "The Character entered is a NUMBER"
else
echo "The Character entered is a Special Symbol"
fi
我只想知道這行代碼有什么問題 if [[ $Char == [AZ] -o $Char == [az] ]]
uj5u.com熱心網友回復:
您已經混淆了各種比較運算子的語法。( testor [) 命令確實使用-o“或”運算子的語法,但條件[[構造具有不同的語法;在那里,-o檢查是否啟用了給定的 shell 選項。要使用 獲得“或” [[,請使用||測驗之間的語法:
if [[ $Char == [A-Z] ]] || [[ $Char == [a-z] ]]
then
# ...
您也可以使用針對您的語言環境的字符類進行測驗的 bash 語法:
#!/bin/bash
read -p "Enter the Character " Char
if [[ $Char == [[:alpha:]] ]]
then
echo "The Character entered is an ALPHABET"
elif [[ $Char == [[:digit:]] ]]
then
echo "The Character entered is a NUMBER"
else
echo "The Character entered is a Special Symbol"
fi
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/452546.html
下一篇:了解信號阻塞和信號暫停
