首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在条件变量中设置变量

在条件变量中设置变量
EN

Stack Overflow用户
提问于 2018-02-23 04:16:08
回答 2查看 236关注 0票数 0

是否可以从条件内的命令输出中设置变量,如果没有为变量赋值,则条件为false。

如果我将变量设置为不返回的grep,然后进行测试:

代码语言:javascript
运行
复制
test=$(echo hello | grep 'helo')
if [[ ! -z $test ]]; then
  echo "is set"
else
  echo "not set"
fi

输出:未设置(这是预期的)

但我试着把这一切都归结为这样一句话:

代码语言:javascript
运行
复制
test=
if [[ ! -z test=$(echo hello | grep 'helo') ]]; then
  echo "is set"
else
  echo "not set"
fi

输出:"is set“(预期未设置)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-02-23 04:43:49

如果有匹配,grep将返回success,因此您可以这样做:

代码语言:javascript
运行
复制
if test=$(echo hello | grep 'helo')
then
  echo "Match: $test"
else
  echo "No match"
fi

如果您正在运行退出代码无法区分的内容,则可以在同一行上分配和签入两个语句:

代码语言:javascript
运行
复制
if var=$(cat) && [[ -n $var ]] 
then
  echo "You successfully piped in some data."
else
  echo "Error or eof without data on stdin."
fi

(或者,如果即使命令报告失败也要检查结果,则使用;而不是&& )

票数 4
EN

Stack Overflow用户

发布于 2018-02-23 14:24:26

使用shell的parameter expansion alternate value语法、echo -e和一些退格符:

代码语言:javascript
运行
复制
test=$(echo hello | grep 'helo'); echo -e not${test:+\\b\\b\\bis} set

它根据grep找到的内容输出is setnot set

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48936439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档