【发布时间】:2020-03-19 15:29:27
【问题描述】:
在我不理解的 bash shell 脚本中发现了一个奇怪的地方。在下面的代码序列中,定义了两个字符串;一个长度为 99 个字符,一个长度为 100 个字符。将每个字符串的长度与值 3 进行比较。如果使用“
我有两个问题:1)为什么? 2) 这是错误还是功能?
#/bin/bash
string99="abcdefghijklmnopqrstuvwxyz01234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890abcdefghijklmnopqrstuvwxy"
string100="abcdefghijklmnopqrstuvwxyz01234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890abcdefghijklmnopqrstuvwxyz"
lng99=`expr length $string99`
lng100=`expr length $string100`
echo
echo "-- 99 --------- if [[ \$lng < 3 ]] -----------------"
if [[ $lng99 < 3 ]]
then
echo "$string99 is $lng99 characters long."
else
echo "length of string is greater than 3"
fi
echo
echo "-- 99 -------- if [[ \$lng -lt 3 ]] ----------------"
if [[ $lng99 -lt 3 ]]
then
echo "$string99 is $lng99 characters long."
else
echo "length of string is greater than 3"
fi
echo
echo "-- 100 -------- if [[ \$lng < 3 ]] -----------------"
if [[ $lng100 < 3 ]]
then
echo "$string100 is $lng100 characters long."
else
echo "length of string is greater than 3"
fi
echo
echo "-- 100 ------- if [[ \$lng -lt 3 ]] ----------------"
if [[ $lng100 -lt 3 ]]
then
echo "$string100 is $lng100 characters long."
else
echo "length of string is greater than 3"
fi
这个测试序列的输出是:
-- 99 --------- if [[ $lng < 3 ]] -----------------
length of string is greater than 3
-- 99 -------- if [[ $lng -lt 3 ]] ----------------
length of string is greater than 3
-- 100 -------- if [[ $lng < 3 ]] -----------------
abcdefghijklmnopqrstuvwxyz01234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890abcdefghijklmnopqrstuvwxyz is 100 characters long.
-- 100 ------- if [[ $lng -lt 3 ]] ----------------
length of string is greater than 3
【问题讨论】:
-
不要使用反引号`。请改用
$(...)。不要使用expr。只需lng99=${#string99}。
标签: bash if-statement