次の簡略化された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 = $ *"よりも優先されることを読んだので、files=("$@")
and "${files[@]}"
構文を使用していることに注意してください。
files=$*
、これまで通常の?それは明らかに間違っています。