变量中的bash脚本空间

时间:2012-06-01 08:46:26

标签: bash

我有以下文件: 〜/ tmp / testbash $ l file 1.test move.sh *

where move.sh is:
#!/bin/bash
#-x

FILENAME='file\ .test'
echo $FILENAME
echo joo
mv $FILENAME test.test

当我运行./move.sh时,我得到了这个输出和错误:

file\ .test
joo
mv: target `test.test' is not a directory

问题在于它执行以下命令: mv文件.test test.test 而不是: mv文件\ .test test.test

有任何解决此问题的建议吗?

2 个答案:

答案 0 :(得分:8)

如果变量包含嵌入的空格,则将变量括在双引号(“)中。

FILENAME='file .test'
mv "$FILENAME" test.test

答案 1 :(得分:3)

如果变量值中有空格,请使用双引号:

FILENAME='file\ .test'
echo "$FILENAME"
echo joo
mv "$FILENAME" test.test