Bash 使用两个变量路径删除文件不起作用

Bash 使用两个变量路径删除文件不起作用

我有一个包含以下代码的 bash 脚本:

path=/apps/files/
ext=*.csv

rm -f $path$ext

这不起作用。当我设置 -o 来回显每个命令时,我在输出中看到了这个...

rm -f '*.csv'

因此它没有获取路径,但我在整个脚本中都使用了该路径变量,并且它有效。唯一的区别是我将它与特定文件名和 rm 以外的命令一起使用。所以类似...

file=abc.csv
echo "some text" >> $path$file

... 将完美运行。

任何帮助,将不胜感激。

答案1

不引用作业

ext=*.csv

您将设置ext为“ *.csv'" only if there are NO.csv files in the current directory. If the current directory has*.csv filesext”将获得它们的列表。

例如,.csv我的主目录中有 18 个文件,而 中没有~/bin

walt@bat:~(0)$ cd ~/bin
walt@bat:~/bin(0)$ ext=*.csv
walt@bat:~/bin(0)$ echo $ext
*.csv
walt@bat:~/bin(0)$ cd
walt@bat:~(0)$ ext=*.csv
walt@bat:~(0)$ echo $ext
abook15.csv abook62.csv abook8.csv abook.csv accountactivity.csv Address book headers.csv addresses.csv allphones.csv assets.csv bbook.csv Jchq-2013-08-01-2014-07-31.csv Jchq.sort.csv PCF2016Aug04.csv portfolios.csv rickdisk.csv test.csv testmoo1.csv testmoo2.csv

显然,“ $path/$ext” 看起来会很滑稽。

为了防止这个文件名插值,请引用您的任务:

ext='*.csv'

相关内容