gpt4 book ai didi

linux - 计算唯一值可以直接在 shell 中使用,但不能在反引号中使用

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:57:02 27 4
gpt4 key购买 nike

我试图弄清楚为什么这在命令行中有效,但是当它在变量中时却不起作用,我试图计算一个数字的唯一出现次数,

$ echo 1,1,2,3,4,5 | tr , \\n | sort -u | wc -l
5
$ test=`echo 1,1,2,3,4,5 | tr , \\n | sort -u | wc -l`
$ echo $test
1

我假设它在变量中时被视为一行,但不确定为什么以及如何解决它?

谢谢!

最佳答案

你可以通过 set -x 看到发生了什么:

$ test=`set -x; echo 1,1,2,3,4,5 | tr , \\n | sort -u | wc -l`
++ echo 1,1,2,3,4,5
++ tr , n
++ wc -l

这里你看到\n变成了n

\n转义失败;尝试

test=`echo 1,1,2,3,4,5 | tr , '\n' | sort -u | wc -l`

引号会阻止 `\' 消失

甚至

 test=$(echo 1,1,2,3,4,5 | tr , '\n' | sort -u | wc -l)

因为我们通常更喜欢 $() 而不是反引号,反引号会导致其他类型的麻烦

关于linux - 计算唯一值可以直接在 shell 中使用,但不能在反引号中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34086472/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com