繁体   English   中英

sed 命令不适用于 open 命令

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM