首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将带空格的输出字符串分配给Bash脚本中的变量

将带空格的输出字符串分配给Bash脚本中的变量
EN

Stack Overflow用户
提问于 2016-03-18 15:41:58
回答 1查看 37关注 0票数 1

我想输入一个命令输出,其中包含几个管道。我编写的代码如下所示:

代码语言:javascript
运行
复制
curl https://www.gentoo.org/downloads/signatures/ | grep 0x | cut -d '>' -f3 | cut -d '<' -f1  |  while read line; do
gpg --recv-keys $line
tempfingerprint= `gpg --fingerprint $line | head -2 | tail -1 | cut -d'=' -f2 | cut -d ' ' -f2-12`
echo $tempfingerprint

当我试图回显结果(最后一行代码)时,我会收到一条错误消息。我调试了它,这是调试日志:

代码语言:javascript
运行
复制
336 + head -2
336 + tail -1
336 + cut -d= -f2 
336 + cut -d ' ' -f2-12 
336 + gpg --fingerprint 0xBB572E0E2D182910
36 + tempFingerPrint= 36 + 13EB BDBE DE7A 1277 5DFD B1BA BB57 2E0E 2D18 2910 
./gentoo-stage.sh: line 36: 13EB: command not found

如何将所有指纹分配给变量?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-18 15:48:54

=之后有一个空间

代码语言:javascript
运行
复制
tempfingerprint= `gpg --fingerprint $line | head -2 | tail -1 | cut -d'=' -f2 | cut -d ' ' -f2-12`
#               ^

这就是导致错误的原因,把它移除。

另外,它不是必需的,但是您应该更喜欢"$(...)"而不是`...`,因为它更安全,更容易阅读:

代码语言:javascript
运行
复制
tempfingerprint="$(gpg --fingerprint $line | head -2 | tail -1 | cut -d'=' -f2 | cut -d ' ' -f2-12)"

一般来说,总是引用你的变量展开。

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

https://stackoverflow.com/questions/36088588

复制
相关文章

相似问题

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