所以我想构造一个命令来优先打印动态字符串。
我有变量:
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_