Shell-Script

如何在shell腳本中將字元串與萬用字元字元串進行比較?

  • August 21, 2021

我想在kshshell 腳本中將文件名字元串與文件遮罩進行比較。你能更正語法嗎?

if [ "NPER20200422TEST.PTN" = "NPER*.PTN" ]
then
   echo "File matched"
else
   echo "File not matched"
fi

我想將我的文件字元串與給定的文件遮罩匹配。

確保您使用的是bashkshzsh,然後

if [[ "NPER20200422TEST.PTN" == NPER*.PTN ]]

使用雙括號條件,並且特殊的通配元字元必須不加引號。

在類似 Bourne 的外殼中,包括ksh,這就是case構造的用途:

case NPER20200422TEST.PTN in
 (NPER*.PTN) echo "File matched";;
 (*) echo "File not matched";;
esac

請注意,在 Bourne shell(一個歷史上已不再使用的 shell,儘管許多人一直sh對它感到困惑)中,您必須省略(s. 在標準( POSIX )實現中允許使用(*)或。*)``sh

引用自:https://unix.stackexchange.com/questions/581729