我有一个包含以下代码的 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 files
ext”将获得它们的列表。
例如,.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'