bash - Bash 从路径变量和 sed 命令中删除路径

bash - Bash 从路径变量和 sed 命令中删除路径

问题是关闭反引号`在命令中的位置:

export PATH=`echo ${PATH} | awk -v RS=: -v ORS=: '/SDE/ {next} {print}'` | sed 's/:*$//'

如果您使用推荐的$(...)符号,您会看到这相当于:

export PATH=$(echo ${PATH} | awk -v RS=: -v ORS=: '/SDE/ {next} {print}') | sed 's/:*$//'

它将操作的输出通过管道export传输到sed,但是export是静默的。

采用:

export PATH=$(echo ${PATH} | awk -v RS=: -v ORS=: '/SDE/ {next} {print}' | sed 's/:*$//')

我已经修复了逐字复制错误命令的答案。正如三人组在评论中指出的那样,我并不完全相信该awk解决方案,但问题是“代码出了什么问题”,答案是“反引号的位置”。该awk脚本确实处理删除 PATH 中任何位置的 PATH 元素;该sed脚本只是确保没有尾随:,因此不会在 PATH 末尾隐式使用当前目录。

另请参阅:我如何在 shell 脚本中操作 PATH 元素clnpath以及如何防止在其中复制 PATH 变量中csh的脚本——该脚本适用于像 Bourne、Korn、Bash shell 这样的 POSIX 式 shell,尽管有问题的主题。clnpath和这里使用的符号之间的一个区别是clnpath只删除完整的路径名;它不会尝试进行部分路径元素匹配:

export PATH=$(clnpath $PATH /opt/SDE/bin)

如果要删除的路径元素是/opt/SDE/bin. 请注意,clnpath可用于维护LD_LIBRARY_PATH、CDPATH和MANPATH任何其他类似路径的变量;awk当然,调用也可以。

我顺便注意到脚本中的/SDE/模式将删除;正则表达式中的斜杠与路径名中的斜杠无关。awk/opt/USDER/bin

🌸 相关推荐

雕鸮能闻到将死之人的腐烂气味?攻击谁就是快死了?(误会)
如何在WIN10中启动GUI:超详细图文教程,小白也能轻松搞定!
三星s8怎么开内存查看
365彩票最新版app下载

三星s8怎么开内存查看

📅 07-17 👀 809