解析包含竖线的变量

解析包含竖线的变量

我有一个 bash 脚本,涉及yad.默认情况下,yad输出结果由管道字符“ |”分隔。

我有一个字符串变量output。回显它表明它包含以下内容:

/dev/sde|
name0|name1|name2|

我希望所有这些竖线都改为换行符。

这不起作用:echo "$output" | tr '|' '\n'
这也不起作用:echo "$output" > /tmp/output; echo $(cut -d'|' -f1 < /tmp/output)
两次尝试都只会输出换行符。/tmp/output创建后,它包含两个空行,但不包含任何文本。

答案1

你的tr应该没问题。

尝试逃跑"\|"

答案2

我终于弄清楚发生了什么事:变量设置不正确。缩短:

yad --plug=12345 --tabnum=1 &
yad --plug=12345 --tabnum=2 &
output="$(yad --notebook --key=12345)"
echo "$output"

$output自从结果打印到终端以来,似乎已经得到回显。
但去除回声并没有效果。然后我意识到前两个命令是输出数据的命令,不是第三个外部yad命令。
移动output="$(到第一个 yad 命令的开头解决了空变量的问题。

而且,我浏览man yad并发现有一个 cli 标志正是我想要的:

--separator='\n'

相关内容