我刚刚开始在Unix中编写if-else语句。这是我最近写的一个简短的Bash脚本。我不断收到一个模糊的重定向错误,但我无法解决问题。
执行时,我收到以下错误消息:
stringComp: line 17: $str2: ambiguous redirect
stringComp: line 20: $str2: ambiguous redirect
stringComp: line 23: [: too many arguments
这是脚本:
str1="I like turtles"
str2="I want to be Iron Man"
if [ $str1 > $str2 ]
then
echo "The first string is longer than the second"
elif [ $str1 < $str2 ]
then
echo "The second string is longer than the first"
elif [ $str1 = $str2 ]
then
echo "Both strings are of equal length"
else
echo "Invalid argument"
fi
关于该怎么做的任何建议?感谢。
答案 0 :(得分:1)
$str1 > $str2
不是比较字符串长度,>
实际上是与[
一起使用的重定向运算符,${#str1}
是Unix系统中的一个独立程序。
您可以使用str1="I like turtles"
str2="I want to be Iron Man"
if [[ ${#str1} -gt ${#str2} ]]
then
echo "The first string is longer than the second"
elif [[ ${#str1} -lt ${#str2} ]]
then
echo "The second string is longer than the first"
elif [[ ${#str1} -eq ${#str2} ]]
then
echo "Both strings are of equal length"
else
echo "Invalid argument"
fi
来获取字符串长度:
[[...]]
最好在bash中使用serializer.is_valid()
。