0

我尝试使用以下命令将输出存储到变量:

k=$(kill -HUP 1234)  #command getting executed but not storing to variable
echo "$k"

为了检查输出是否包含单词,我可以这样做:

  if [[ outputvar =~ .*No such process*. ]]

根据示例,上面应该可以工作,但我不知道为什么它不工作。你能告诉我正确的方法吗,这样如果我无法重新启动进程,我至少可以使用直接 gunicorn_django 命令启动一个新进程

4

1 回答 1

1

通常此类错误消息在stderr流上输出,而$()构造仅返回stdout流。您需要重定向stderrstdout

k=$(kill -HUP 1234 2>&1)

您的正则表达式有一个错误:*.最后必须是.*; 您还需要在测试中引用您的字符串:

if [[ "$k" =~ .*No\ such\ process.* ]]

注意"$k"是引号,而正则表达式中的空格被转义;您不能引用正则表达式 (as ".*No such process.*"),因为在测试中使用带引号的字符串会=~强制字符串匹配而不是正则表达式匹配。

于 2012-10-29T06:54:27.653 回答