[英]sed command doesn't work with open command
我使用sed
替换字符串中的字符~
,然后在 macOS 上打开该字符串所示路径的文件夹。
#!/bin/bash
string="~/example"
echo $string | sed -r 's/~/\/JKFolder\/demo/'
open $string | sed -r 's/~/\/JKFolder\/demo/'
Echo
可以打印正确的路径/JKFolder/demo/
,但是open
不能,它似乎运行了字符串的第一部分,这与open $string
相同。 Sed
在此命令中不起作用。 谢谢你。
当您省略echo
时, string
变量不会传递给sed
,因此它不起作用。
这会起作用:
open $(sed 's/~/\/JKFolder\/demo/' <<< "$string")
open $(echo "$string" | sed 's/~/\/JKFolder\/demo/')
open $(echo "$string" | sed 's,~,/JKFolder/demo,')
但是,在这种情况下,您并不真的需要sed
,您可以使用
open "${string/\~/\/JKFolder\/demo}"
请参阅此在线演示。
"${string/\~/\/JKFolder\/demo}"
是变量扩展的一个示例,其中第一次出现的~
字符被替换为/JKFolder/demo
字符串。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.