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