减少包含空格的变量的双引号?

时间:2013-07-20 12:38:31

标签: string bash file-io escaping

我有一个这样的脚本:

file="results/semester1 (2013).csv"
if [ -f "$file" ]; then
  echo 'File exists.'

  # do more stuff with $file
fi

我想在if块中使用$file执行更多操作,例如问题mvcpln等。但我每次都发现我将$file传递给这些Unix命令,我必须用双引号括起来处理文件名中的空格,否则我会收到错误。正如你在if条件中看到的那样,我已经做过一次了。

有没有什么办法可以“一劳永逸地”引用它,所以我不必每次都这么做?

2 个答案:

答案 0 :(得分:4)

  

有没有什么办法可以“一劳永逸地”引用它,所以我不必每次都这么做?

没有。 必须双引用变量的每个用法(特殊情况除外,请参阅Mat的答案),其中可能包含空格。没有办法解决它。

这很不寻常,有点烦人,但你很快习惯了。

答案 1 :(得分:2)

不是我知道,不是。只要您希望将变量作为单个值处理,就需要引用该变量。

具体来说,您可以避免使用双括号引用它。然后就不会发生分词。但这并不能为您节省任何打字费用。

if [[ -f $file ]] ; then
  ...
fi