我有以下简化的bash脚本
#!/bin/bash
files=("$@")
if [ "X$files" = "X" ]; then
files=$HOME/print/*.pdf;
fi
for file in "${files[@]}"; do
ls "$file";
done
如果我将参数(文件名)作为参数传递,则此脚本将打印正确的文件名。另一方面,如果我不传递参数,它将打印
/home/user/print/*.pdf: No such file or directory
为什么在这种情况下不能扩展文件名,我该如何解决?请注意,我使用files=("$@")
and "${files[@]}"
构造,因为我读到它比通常的“ files = $ *”更可取。
files=$*
过平常?那是完全错误的。