我正在尝试创建一个脚本,用绝对路径替换子字符串,所以我使用
sed s/TEMPDIR/$PWD/ file.py > newfile.py
所以显然我想用绝对路径替换 TEMP,但我不断得到
sed:-e 表达式 #1,字符 12:未知选项到"s"
我认为这可能是因为路径包含"/",但我不知道如何解决它。有什么想法吗?
另外,deos PWD保证了绝对的路径,因为我不处理链接?
谢谢!!
使用不同的分隔符:
sed "s@TEMPDIR@$PWD@" file.py > newfile.py
使用 PWD 可能无法保证绝对路径。 (取决于外壳)。 但是pwd
将返回一个绝对路径,因此请使用:
sed "s@TEMPDIR@$(pwd)@" file.py > newfile.py
请注意,如果您的路径包含 @
,则这两种方法都不起作用。 选择在 中均未显示的分隔符。 请注意外壳标准的以下内容:
如果 PWD 设置为由 pwd -P 输出的路径名,如果对当前工作目录或该目录的任何父目录没有足够的权限来确定该路径名是什么,则未指定 PWD 的值。可以忽略对此变量的赋值。如果应用程序设置或取消设置 PWD 的值,则未指定 cd 和 pwd 实用程序的行为。
所以你可以依靠$PWD。 请注意,pwd
和 $PWD
都不会解析符号链接,因此您可能更喜欢使用readlink -f .