Bash路径问题

时间:2012-01-23 19:50:38

标签: bash shell escaping spaces

我有一个包含以下行的脚本:

propFile="${0%/*}/anteater.properties"
  1. “$ {0%/ *}”是什么意思?
  2. 此命令提供了脚本的路径 - 但路径中有空格,脚本找不到此文件 - 如何处理?

2 个答案:

答案 0 :(得分:2)

变量扩展中的%运算符会删除给定的匹配后缀模式。因此${0%/*}接受变量$0,并在结尾删除所有匹配的/*。这相当于命令dirname,当给定路径时,它返回该路径的父目录。

为了处理bash变量中的空格,每当扩展变量时(即每当你写$var时),都应引用它。简而言之,请始终使用"$var"而不是$var

请考虑阅读bash手册中的shell parameter expansionvariable quoting,了解有关这两个主题的更多信息。

答案 1 :(得分:1)

  1. 剥去匹配/*的后缀,即最后一次斜杠后的所有内容,包括斜杠本身。

  2. 在您使用它的任何地方引用它(cat "$propFile")。