该脚本有效,但有没有办法在不使用“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"
答案 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
}