一条语句中有两次Bash替换?

休伯特·格热斯科维克

在Bash中,您可以用以下内容替换空或未定义的变量:

${myvar:-replacement}

您也可以像这样替换变量中的子字符串:

${myvar//replace this/by this}

现在,我想将两个替换组合为一个:如果变量未定义,请将其设置为replacement,否则将其替换为其他内容。

我可以分两行编写,没有问题。

myvar=${myvar:-replacement}
myvar=${myvar//replace this/by this}

或更紧密地反映我的业务逻辑:

if [[ -n "${myvar:-}" ]]; then
  myvar="${myvar//replace this/by this}"
else
  myvar="replacement"
fi

有没有一种方法可以将两个替换合并为一条语句/一行?

我尝试了这个没有成功:

myvar=${${myvar:-replacement}//replace this/by this}   # bad substitution

set -u在脚本中使用的是当我使用未定义的变量时它们会出错。这就是为什么我需要未定义var上的第一个子对象的原因。

iBug

据我所知,这在Bash中是不可能的。

最好的办法是多行编写它们,或者使用NOP命令,或者使用实用程序:

myvar=${myvar:-replacement}
myvar=${myvar/src/dest}
myvar=$(sed 's/src/dest/g' <<< ${myvar:-defaulttext})

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Powershell的一条语句中使用-replace两次

一条语句中有两个查询

一条语句中有多个游标

printf两次打印同一条语句

当sql视图中有两条记录时,列表视图显示同一条记录两次

ISP在一条路由中两次拥有相同的IP是否正常?

在一条语句中为两个模型创建一条记录

在不两次编译子节点的情况下用另一条指令替换指令

在一条语句中将相同的UUID插入到两个表中(一次作为主键,一次作为外键)

在一条语句中一次将多个条目添加到HashMap

在一条语句中基于两个连接的列值选择行-ORACLE

SQL:为什么在一条语句中计算两个表的计数慢?

我可以在一条语句中从两个表中删除条目吗?

如何在同一条语句中合并两个字段

两次函数调用,但仅显示一条轨迹

汇编OFFSET在一条指令中使用了两次,什么是offset的offset?

一条语句中的多个data.table分配有性能优势吗?

在一条语句中打印多行而没有前导空格

LAG有效,LEAD在同一条语句中返回1

在同一条语句中添加列和索引

一条语句中的多个isin查询

在Groovy中的一条SQL语句中插入多行

在一条语句中从多个表中删除

在一条语句中添加多个约束

无法在一条语句中执行多个更新查询

只选择JOIN语句中的最后一条记录

同一条语句中的SQL属性变体

MySQL更新并在一条语句中选择

同一条语句中的多个for-of循环(Javascript)