我正在执行一些从控制台生成字符串的操作,例如,我正在执行以下操作:
./eqagent 添加目标目标类型=kafka 事件-服务器=本地主机:9999
并得到这个消息:
均衡代理返回以下错误: 代理目标已存在
我想捕捉它,把它存入一个变量,然后用if语句把它作为一个条件。
你能不能这样做:
variable=`your-command`
然后使用$variable做任何你想做的事情
试试这个 :
message=$(./eqagent add-target target-type=kafka events-servers=localhost:9999 2>&1)
varname=$(某些命令)
语法称为命令替换,并扩展为由括号中包含的命令生成的字符串。
<代码>2
如果您只想测试成功或失败,您可以使用命令的返回代码,如下所示:
if
./eqagent add-target target-type=kafka events-servers=localhost:9999 2>&1
then
# Success!
else
# Failure...
fi
返回代码也可以在特殊的shell变量$中使用
如果在命令执行后立即调用,则vy约定成功时为零,失败时为非零值。
在我看来,你的问题就像一个典型的X-Y问题:你的问题是,你想在命令失败时采取行动,当这种情况发生时,它会将返回值设置为非零值。那么,您实际想要的是使用<code>$ 变量。下面是您的用例的一般化示例:
$ ./command
Argh... Failure!
$ echo $?
1
所以你可以做:
if [ $? -eq 1 ]; then
echo "It failed :("
fi
您可能有几个返回值来区分错误,因此您可以检查等于2
,3
或255
的值。
但是你的外壳允许你以更简洁的方式做到这一点:
# prints 'it failed :(' only when command's result ($?) is non-null
./command || echo "it failed :("
因此,对于您的示例,您应该能够使用以下方法完成:
./eqagent add-target target-type=kafka events-servers=localhost:9999 || echo "it failed :("
如果您的命令真的只使用字符串返回错误状态(不太好),您可以使用以下命令检查确切的字符串:
output=$(./eqagent add-target target-type=kafka events-servers=localhost:9999)
if [ "$output" == "Equalum agent has returned the following error: The agent target already exists" ]; then
echo "it failed :("
fi
最后,您可以检查是否包含子字符串(如果这不是程序的唯一输出):
error_msg="The agent target already exists"
if [ -z "${output##*$error_msg*}" ] ;then
echo "it failed :("
fi
以上语法适用于大多数shell(bash、ksh、dash…)。
如果您在< code>$output变量中没有得到预期的输出(如果程序在stderr而不是stdout上打印错误,这种情况很可能发生),您可以使用以下技巧连接两个输出:
output=$(./eqagent add-target target-type=kafka events-servers=localhost:9999 2>&1)
最后,在实际用例中,您可能需要两者的混合:
error_msg="The agent target already exists"
output=$(./eqagent add-target target-type=kafka events-servers=localhost:9999)
if [ $? -ne 0 ]; then
echo -n "it failed "
if [ -z "${output##*$error_msg*}" ] ;then
echo "; because target already exists. :-s"
else
echo ":-("
fi
fi
问题内容: 在“全局属性”中的Jenkins配置(http:// JenkinsURL/configure)中,我定义了一些“环境变量”。 如何在Groovy脚本控制台(http:// JenkinsURL / script)中访问它们? 我试图找到合适的解决方案(例如:[在Jenkins构建步骤(Windows)中从groovy脚本访问构建环境变量中]提到的解决方案),但似乎它们都不适合我。 我
在“全局属性”中的 Jenkins 配置 (http://JenkinsURL/configure) 中,我定义了一些“环境变量”。 如何在Groovy脚本控制台(http://JenkinsURL/script)中访问它们? 我试图找到合适的解决方案(例如:在Jenkins构建步骤(Windows)中从groovy脚本中访问构建环境变量),但似乎没有一个适合我。 我尝试过例如: 和 和 和
对于我正在学习的一门在线课程,我正在尝试保存我定义为变量的第二组整数、双倍和字符串,在使用扫描器读取它们(第二组)之后。问题是我不知道如何处理我定义的第二组变量。我尝试将它们实例化为一个新变量,但我总是遇到错误。我需要帮助读取每个变量,然后保存它们。
问题内容: 当我尝试从使用PyQt5 Designer创建的qtextedit中获取文本时,出现错误或“ Python停止工作”,并且脚本自动停止。我尝试了多种解决方案,但没有任何效果。我必须将文本从qtextedit分配给变量,以检查进程是否运行。那是PyQt5生成的代码: 此处的按钮代码: 这里的代码用于从文本框中获取文本并分配给变量: 结束码: 问题答案: 没有任何方法,如果要获取必须使用的
问题内容: 我们如何从文本文件读取数据并将其存储在String变量中? 是否有可能在方法中传递文件名,并且它将返回字符串,即文件中的文本。 我必须导入哪种工具?声明列表会很棒。 问题答案: 这些是必需的进口: 这是一种方法,通过将文件名作为参数传递给它,您可以从文件中进行读取,如下所示:
我为这个问题搜索了很多,但在任何地方都找不到可行的解决方案。有人能帮我吗?我想通过jenkins脚本控制台获取现有的环境变量值。