次を実行するとどうなる?
file="my report.txt"cp $file backup/正答
- my と report.txt という 2 つのファイルをコピーしようとしてエラーになる
- my report.txt が backup/ にコピーされる
- file という名前のファイルをコピーしようとしてエラーになる
- backup/ の中に my と report.txt という空ファイルができる
解説
二重引用符なしで $file を展開すると、シェルは値を空白で分割して my と report.txt の 2 つの引数にする。cp は my と report.txt を backup/ にコピーしようとし、どちらも存在しないのでエラーになる。cp "$file" backup/ と引用すれば 1 つの引数として扱われ、選択肢 2 の結果になる。選択肢 3 は $ を付け忘れたときの挙動である。空白を含むファイル名はよくあるため、変数展開は常に "$var" と引用する。
参考: www.gnu.org
この問題を含む Linux・シェル のテストを制限時間つきで解く
Linux・シェルクイズへ