bash脚本 - 带支架扩展的状态



我最近在bash练习中遇到了问题,这是创建一个脚本以检查用户输入的日期是否与我的某些日期匹配。

要对其进行更多分解,我的练习是为了检查图案匹配与支撑式扩展,但这非常棘手,因为我在下面尝试了这些行,但它们都没有用。我希望你们能帮助我。

echo -e "Enter your birthday: c"
read birthday
WoodRat={19240205..19250123}

if [[ $birthday =~ $WoodRat ]]; then
echo "Your Chinese Zodiac is: Wood Rat "
else
echo "Sorry, cant find any matches."
fi

撑杆扩展不是正确的工具:将字符串而不是值列表分配给 WoodRat,而 {19240205..192501123}并不是测试值是否在一个值中的正则表达式范围。您最好使用明确的最小值和最大值:

WoodRat=(19240205 19250123)
if (( birthday >= ${WoodRat[0]} && birthday <= ${WoodRat[1]} )); then
  echo "Your Chinese Zodiac is: Wood Rat "
else
  echo "Sorry, cant find any matches."
fi

支撑扩展和正则表达式是不同的。支撑扩展扩展到多个元素,而REGEX匹配模式。

您应该使用数值比较:

if [[ $birthday -ge 19240205 && $birthday -le 19250123 ]]

要通过撑杆扩展来进行,您需要与每个元素进行比较:

# Very inefficient, never use this:
for num in {19240205..19250123}
do
  if [[ $birthday = $num ]] 
  then ...

相关内容

  • 没有找到相关文章

最新更新