将命令的输出存储在变量 [closed] 中

Store output of a command in a variable [closed]

提问人:mohsinali1317 提问时间:10/3/2021 最后编辑:Cyrusmohsinali1317 更新时间:10/4/2021 访问量:62

问:


这个问题是由一个错别字或一个无法再重现的问题引起的。虽然类似的问题可能在这里成为主题,但这个问题的解决方式不太可能帮助未来的读者。

2年前关闭。

在我的 mac 终端中,我试图将命令的输出存储到这样的变量中

$ animals=$(cat animals.txt | head -n $plusOne | tail -n $numberofanimals | sort -u | sed -E "s/[*#/@2]//g; s/D/d/g ; s/G/g/g ; s/E/e/g ; s/H/h/g ; s/O/o/g ; s/C/c/g ; s/[!]//g”)
> 

但它不起作用。当我按下时,我会在下一行收到提示。知道为什么吗?Enter>

Bash Shell 行情

评论

0赞 mohsinali1317 10/3/2021
我添加了一张图片来解释我的意思@lurker
0赞 lurker 10/3/2021
这并不能解决问题,但看起来您需要在第一个正则表达式中转义: 。约翰·库格尔曼(John Kugelman)指出了实际问题(末尾使用多字节字符双引号而不是ASCII双引号)。/s/[*#\/@2]//g;
0赞 Charles Duffy 10/3/2021
莫。它们不可互换。"
1赞 William Pursell 10/4/2021
cat | head | tail可以完全用 SED 完成。除非排序取决于您使用 sed 进行的翻译,否则您可以将整个管道替换为sed -e "1,$(($plusOne - $numberofanimals))d" -e 's/[*#/@2!]//' -e 'y/DGEHOC/dgehoc/' -e "${plusOne}q" animals.txt

答:

3赞 John Kugelman #1

您在行尾有一个智能引号,而不是常规的双引号。"

评论

0赞 Charles Duffy 10/3/2021
这难道不会使接近错别字的问题符合条件吗?(当然,与其说是错别字,不如说是从为文字处理或出版而不是软件开发而构建的软件中复制/粘贴)。
0赞 John Kugelman 10/4/2021
确实如此。我已经投票并撤回了,所以我不能重新投票。