如何打印具有优先级的动态字符串 - 一行

如何打印具有优先级的动态字符串 - 一行

所以我想构造一个命令来优先打印动态字符串。

我有变量:

a=first
b=second/third/fourth/...

我想运行sed命令b

sed  -e 's/\//_/g'

我得到

second_third_fourth_

然后我想打印a/${b}成这样`

first/second_third_fourth_

像这样的东西:

echo first/(second/third/fourth... | sed  -e 's/\//_/g' )

我是 bash 脚本新手,需要在 CI 环境中执行此操作。

答案1

]# echo $a $b
first sec/th/for/

]# echo $a/${b//\//_}
first/sec_th_for_

在 man bash 中找到该位置:/Param<Enter>nnnnn区分大小写参数扩展段落。

答案2

bash

echo "$a/${b//\//_}"

zsh

echo $a/${b:gs;/;_}

答案3

在 bash 中,您可以简单地执行以下操作:

$ echo "$a/$(sed  -e 's/\//_/g'<<<"$b")"
first/second_third_fourth_...

<<<是一个herestring,它只是将变量作为输入传递给程序的一种快速(但不可移植;bash 支持此功能,但许多其他 shell 不支持)的方法。

或者:

$ echo "$a/$(tr '/' '_'<<<"$b")"
first/second_third_fourth_...

答案4

您可以在以下位置尝试此操作bash

# NOT var x=...
a=first
b="second/third/fourth/"

# use another separator to avoid escaping backlashes, in this case a semicolon
echo "$a/$(echo "$b" | sed 's;/;_;g')"

输出:

first/second_third_fourth_

相关内容