bash - sed 命令不适用于 open 命令
问题描述
我使用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
字符串。
推荐阅读
- android - AndroidX 多个 Preferences 实例
- mongodb - 如何使用 mongodb 解决打字稿问题
- f# - F# VS 2019 语法颜色编码
- kubernetes - 如何在 dnsConfig 中将节点 ip 设置为名称服务器?
- java - 如何在 Java Spring 中合并两个列表
- swift - Xcode:持续消息。文档存在已发现并修复的问题
- c++ - 如何避免在模板类中重新定义 typedef?
- sql - SQL 命令同时从两个表中选择
- android - 媒体播放器创建方法似乎不适用于我的项目,导致我的应用程序在启动第一个活动时崩溃。有人帮我请
- react-native - React Native 可能出现未处理的 Promise Rejections 错误