我使用目录编写了脚本~/deleted
(这是一个很长的脚本)。使用~/deleted
整个脚本后。我想让用户通过将路径放入~/.rm.cfg
.
我的文件是这样开始的:
#!/bin/bash
defaultpath=~/deleted
if [ -s ~/.rm.cfg ]
then
defaultpath=$(head -1 ~/.rm.cfg)
fi
我需要将脚本中的每个替换~/deleted
为。$defaultpath
有没有办法在命令行中执行此操作,以便保存并替换原始文件?
我无法让 perl 或 sed 工作。
答案1
sed -i 's|~/deleted|"$defaultpath"|g' file.sh
解释:
-i
告诉sed
就地修改文件。s|~/deleted|"$defaultpath"|g
告诉sed
替换~/deleted
为"$defaultpath"
它找到的地方。
额外功能:在第三行保留 ~/deleted
您没有要求这样做,但在示例脚本中,最好~/deleted
在用于定义的第三行保持不变defaultpath
。要更改~/deleted
除了第三行,使用:
sed -i -e '3n' -e 's|~/deleted|"$defaultpath"|g' file.sh
这会添加一个指示跳过第三行的sed
命令。3n
sed