我能够从字符串中提取子字符串;但无论我尝试使用哪种语法更改(而且我尝试了很多),即使打印输出显示if
字符串匹配,我也无法在此代码段中输入CLIENT_NAME
块预期的一个(附加第一个echo
的输出)。只有第一个echo
打印任何内容。我在这做错了什么?任何想法都非常感谢!
这个想法是,如果客户端被命名为aa_NNNN
,那么我需要提取aa
和NNNN
并检查aa
是否与已知字符串匹配(说" xx
")如果确实如此,只计算版本NNNN
,并在版本NNNN
超过已知版本MMMM
时执行某些操作
#! /bin/sh
CLIENT=$1
...
CLIENT_NAME="${CLIENT:0:2}"
CLIENT_VERSION=2015
echo "Before compare; client: $CLIENT_NAME; version: $CLIENT_VERSION"
if [ "$CLIENT_NAME" == "xx" ]; then
CLIENT_VERSION="${CLIENT:3:4}"
echo "Inside compare; client: $CLIENT_NAME; version: $CLIENT_VERSION"
if [ $CLIENT_VERSION -ge 2016 ]; then
...
fi
fi
第一个回声输出:
Before compare; client: xx; version: 2015
/bin/sh --version
返回:
GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
答案 0 :(得分:1)
我运行代码的结果相同,但是从子字符串提取中删除引号(并在第二个代码中用,
替换:
)修复了它...
CLIENT_NAME=${CLIENT:0:2}
...和...
CLIENT_VERSION=${CLIENT:3:4}