另一种使用变量readed并在函数内作为参数传递的方法

时间:2017-07-25 13:59:07

标签: bash shell if-statement optimization while-loop

该脚本有效,但有没有办法在不使用“tmp”变量的情况下获得相同的结果?

由于

function ask_version () {
while true ; do
 echo -e "Give the version of" $1
local tmp=$2
read -r tmp

  if [[ ! $tmp =~ ^[0-9]$ ]] ; then
     echo -e "Please respect number format"
  elif [[ $tmp -ne $t ]] ; then
   echo -e "It is not the true number"
  else
    return 0
  fi
done
}

ask_version "APP1" "APP1VERSION"
ask_version "APP2" "APP2VERSION"

2 个答案:

答案 0 :(得分:1)

这是我认为你之后的功能版本:

function ask_version () {
while true ; do
 echo -e "Give the version of $1"
 read -r

  if [[ ! $REPLY =~ ^[0-9]$ ]] ; then
     echo -e "Please respect number format"
  elif [[ $REPLY -ne $2 ]] ; then
   echo -e "It is not the true number"
  else
    return 0
  fi
done
}

ask_version "APP1" 5
ask_version "APP2" 6

它不使用tmp变量;相反,它依赖于read的默认变量REPLY,然后将其与函数的第二个参数$2进行比较,我将其作为实际数字传入静态字符串。也许你打算改用变量?

ask_version "APP1" "$APP1VERSION"
ask_version "APP2" "$APP2VERSION"

答案 1 :(得分:0)

因此,为了避免冲突,变量必须是$ 2或$ REPLY。 现在我的代码在我使用$ REPLY时工作,但它在函数内部进行了测试(由用户输入)。但是我想调用这样的函数:ask_version“APP1”“APP1VERSION”用$ APP1VERSION替换$ REPLY

p="5.5.5"

function ask_version () {
while true ; do
echo -e "Give the version of $1"
read -r
  if [[ ! $REPLY =~ ^[0-9]\.[0-9]\.[0-9]$ ]] ; then
    echo -e "Please respect the version format"
  elif [ ! $REPLY == "$p" ] ; then
   echo -e "The version is not the same tagged in GIT"
  else
   return 0
  fi
done
}