【发布时间】:2016-04-12 07:36:35
【问题描述】:
我能够从一个字符串中提取一个子字符串;但是无论我尝试什么语法更改(并且我已经尝试了很多),我都无法在此 sn-p 中实际输入 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.
【问题讨论】:
-
我试过你的代码,它工作。您是否正在使用您压制的代码中的 var
CLIENT做某事? -
@anubhava:这是脚本的命令行参数输入。我知道 CLIENT 得到了正确的输入。准确地说,这种情况下的 $1 是 xx_2016
-
@tiagohngl:哇哦..在那些被压制的行里什么都没有。所以你有内部回声也打印?太疯狂了!
-
好吧,像
script.sh xx_2016这样执行脚本适用于第一个 if。最后,如果您必须将,替换为: -
您的输出与脚本中的
echo语句不太匹配。你能解决这个问题吗?