将 sed 与变量、双引号、路径一起使用

问题描述 投票:0回答:1

我正在尝试使用 sed 修改脚本中的变量。 对我想要修改的路径的变量引用。

问题:是否可以在文件中使用 sed 来修改此脚本以供下一次启动?

我试过了:

#!/bin/bash
main () {
newdir="/okl/dfsdf/dfsf/"
sed -i "s|mnt="/*/"|mnt="\$newdir"|g" file
}

main

我预计 mnt 变量会改变,但只有第一次在代码中定义它时,这就是为什么我需要双引号 mnt="/*/"。 预先感谢

bash variables sed
1个回答
0
投票

sed
逐行运行,不会跨多行跟踪变量定义。一种方法是使用循环来实现您的目的:

#!/bin/bash
main () {
    newdir="/okl/dfsdf/dfsf/"
    while IFS= read -r line
    do
        echo "$line" | sed "s|mnt=\"/*/\"|mnt=\"$newdir\"|g"
    done < file
}

main

© www.soinside.com 2019 - 2024. All rights reserved.