我有这个:
muh_dir=`cd $(dirname "$BASH_SOURCE") && pwd`
是的,我测试了上面的内容(它有反引号),它不能很好地处理 pwd 中的空格。另一方面,这样更好:
muh_dir="$(cd $(dirname "$BASH_SOURCE") && pwd)"
我的问题是 - 这会向我的命令添加 3 个字符,编辑器中的语法会发生变化。第一种方法要好得多..有没有办法用更短的语法来处理空格,或者我只是硬着头皮?
答案1
您的两个代码示例都将失败:
muh_dir=`cd $(dirname "$BASH_SOURCE") && pwd` muh_dir="$(cd $(dirname "$BASH_SOURCE") && pwd)"
您必须添加的最少引号是:
muh_dir=`cd "$(dirname "$BASH_SOURCE")" && pwd`
^ ^ Note the quotes.
但是,请使用$(...)
:
muh_dir=$(cd "$(dirname "$BASH_SOURCE")" && pwd)
答案2
了解报价,然后使用更多引号™。这确实是您能做的最简单且有效的事情。
顺便说一句,任何代码最重要的属性是它的可维护性。字符数与可维护性的相关性非常弱——将 3 个字符添加到 45 个字符(增加 6.7%)来处理空格甚至不会远程触发我的代码鼻子。