![Bash 使用两个变量路径删除文件不起作用](https://linux22.com/image/904825/Bash%20%E4%BD%BF%E7%94%A8%E4%B8%A4%E4%B8%AA%E5%8F%98%E9%87%8F%E8%B7%AF%E5%BE%84%E5%88%A0%E9%99%A4%E6%96%87%E4%BB%B6%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8.png)
我有一个包含以下代码的 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'