gpt4 book ai didi

Bash 正确扩展包含 sed 模式的变量

转载 作者:行者123 更新时间:2023-11-29 09:39:42 24 4
gpt4 key购买 nike

我有一个这样的脚本:

#!/bin/bash

xx="-e \"s|a|b|g\""
sed -i $xx file

但是 sed 中断并显示消息:

sed: -e expression #1, char 1: unknown command: `"'

使用 set -x 我可以看到命令被扩展到 sed -i -e '"s|a|b|g"' file,所以我想双引号是它不起作用的原因。

如何解决这个问题?

最佳答案

我不确定你为什么要做你正在做的事情,但我认为这可能会有所帮助:

$ cat file
a a
$ xx=( -e 's|a|b|g' -e 's|b|c|g' )
$ sed "${xx[@]}" file
c c

使用一个数组来存储 sed 的每个参数。使用 "${xx[@]}" 安全地扩展数组,将每个元素作为单个参数传递。

你可以像这样构建数组:

$ xx=()
$ xx+=( -e 's|a| b c |g' )
$ xx+=( -e 's|c| d |g' )
$ sed "${xx[@]}" file
b d b d

关于Bash 正确扩展包含 sed 模式的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38655622/

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