Shell脚本子串提取和操作

时间:2016-01-07 19:05:04

标签: linux bash shell unix

我能够从字符串中提取子字符串;但无论我尝试使用哪种语法更改(而且我尝试了很多),即使打印输出显示if字符串匹配,我也无法在此代码段中输入CLIENT_NAME块预期的一个(附加第一个echo的输出)。只有第一个echo打印任何内容。我在这做错了什么?任何想法都非常感谢!

这个想法是,如果客户端被命名为aa_NNNN,那么我需要提取aaNNNN并检查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.

1 个答案:

答案 0 :(得分:1)

我运行代码的结果相同,但是从子字符串提取中删除引号(并在第二个代码中用,替换:)修复了它...

CLIENT_NAME=${CLIENT:0:2}

...和...

CLIENT_VERSION=${CLIENT:3:4}