2012-01-23 38 views
1

我有一个包含以下行的脚本:猛砸路径问题

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

回答

2

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

为了处理bash变量中的空格,只要展开变量(即,无论何时写入$var),都应该引用它。总之,总是使用"$var"而不是只有$var

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

1
  1. 去掉后缀匹配/*,即最后一个斜线之后的一切,包括斜杠本身。

  2. 无论你在哪里使用它(cat "$propFile")都会引用它。

+0

引用绝对有效。然而,如果你想直接引用一个带有空格的文件名,你可以用\字符来转义你的空格。 – asf107

+0

@ asf107,如果你想每次都想引用一个存放在变量中的文件名 - 引用它。以防万一。 –