Bash脚本-带大括号扩展的条件

Bash脚本-带大括号扩展的条件,bash,shell,Bash,Shell,我最近在bash练习中遇到了一个问题,即创建一个脚本来检查用户输入的日期是否与我的某些日期匹配 更详细地说,我的练习是用大括号扩展来检查模式匹配,但这非常棘手,因为我尝试了下面这些行,但没有一行有效。我希望你们能帮我 echo -e "Enter your birthday: \c" read birthday WoodRat={19240205..19250123} if [[ $birthday =~ $WoodRat ]]; then echo "Your Chinese Zodi

我最近在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
WoodRat=(1924020519250123)

如果((生日>=${WoodRat[0]}&&Birth大括号扩展在这里不是正确的工具:文字字符串(不是值列表)被分配给
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
WoodRat=(1924020519250123)

如果((生日>=${WoodRat[0]}&&Birth大括号扩展在这里不是正确的工具:文字字符串(不是值列表)被分配给
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
WoodRat=(1924020519250123)

如果((生日>=${WoodRat[0]}&&Birth大括号扩展在这里不是正确的工具:文字字符串(不是值列表)被分配给
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
WoodRat=(1924020519250123)

if((birth>=${WoodRat[0]}&&birth大括号扩展和正则表达式是不同的。大括号扩展扩展到多个元素,而正则表达式匹配一个模式

您应该使用数字比较:

if [[ $birthday -ge 19240205 && $birthday -le 19250123 ]]
要使用支架展开进行此操作,需要对每个元素进行比较:

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

大括号扩展和正则表达式是不同的。大括号扩展扩展到多个元素,而正则表达式匹配一个模式

您应该使用数字比较:

if [[ $birthday -ge 19240205 && $birthday -le 19250123 ]]
要使用支架展开进行此操作,需要对每个元素进行比较:

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

大括号扩展和正则表达式是不同的。大括号扩展扩展到多个元素,而正则表达式匹配一个模式

您应该使用数字比较:

if [[ $birthday -ge 19240205 && $birthday -le 19250123 ]]
要使用支架展开进行此操作,需要对每个元素进行比较:

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

大括号扩展和正则表达式是不同的。大括号扩展扩展到多个元素,而正则表达式匹配一个模式

您应该使用数字比较:

if [[ $birthday -ge 19240205 && $birthday -le 19250123 ]]
要使用支架展开进行此操作,需要对每个元素进行比较:

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

请注意,即使
$WoodRat
包含一个数字列表(它没有),它也会包含许多无效的日期值(例如19249999)。使用
bash-x yourscript
可以向您显示
$WoodRat
中的内容,您可以回答自己的问题。这是调试脚本的基本技术。或者,编写自己的
echo
语句;在作业后添加
echo$WoodRat
也可以向您显示问题。注意即使
$WoodRat
包含一个数字列表(它没有),它也会包含许多无效的日期值(例如19249999)。使用
bash-x yourscript
可以向您显示
$WoodRat
中的内容,您可以回答自己的问题。这是调试脚本的基本技术。或者,编写自己的
echo
语句;在作业后添加
echo$WoodRat
也可以向您显示问题。注意即使
$WoodRat
包含一个数字列表(它没有),它也会包含许多无效的日期值(例如19249999)。使用
bash-x yourscript
可以向您显示
$WoodRat
中的内容,您可以回答自己的问题。这是调试脚本的基本技术。或者,编写自己的
echo
语句;在作业后添加
echo$WoodRat
也可以向您显示问题。注意即使
$WoodRat
包含一个数字列表(它没有),它也会包含许多无效的日期值(例如19249999)。使用
bash-x yourscript
可以向您展示
echo$WoodRat
中的内容,并且您可以回答自己的问题。这是调试脚本的一项基本技术。或者,编写自己的
echo
语句;在作业后添加
echo$WoodRat
,也可以向您展示问题所在
[1]
表示第二个(本例中最后一个)。WoodRat=(A B)
赋值生成一个数组(括号就是这样做的)数组中有两个值。严格来说,您不必使用数组;您可以将值
WoodRatFirst
WoodRatLast
分开。数组只保留了一个参数的概念,即保持定义木老鼠的值的“范围”。
[1]
表示第二个参数(这是本例中的最后一个)。分配的
WoodRat=(ab)
生成一个数组(括号就是这样做的)数组中有两个值。严格来说,您不必使用数组;您可以将值
WoodRatFirst
WoodRatLast
分开。数组只保留了一个参数的概念,即保持定义木老鼠的值的“范围”。
[1]
表示第二个参数(这是本例中的最后一个)<