Linux・シェル4 択難易度 標準

次を実行するとどうなる?

file="my report.txt"cp $file backup/

正答

  1. my と report.txt という 2 つのファイルをコピーしようとしてエラーになる
  2. my report.txt が backup/ にコピーされる
  3. file という名前のファイルをコピーしようとしてエラーになる
  4. backup/ の中に my と report.txt という空ファイルができる

解説

二重引用符なしで $file を展開すると、シェルは値を空白で分割して my と report.txt の 2 つの引数にする。cp は my と report.txt を backup/ にコピーしようとし、どちらも存在しないのでエラーになる。cp "$file" backup/ と引用すれば 1 つの引数として扱われ、選択肢 2 の結果になる。選択肢 3 は $ を付け忘れたときの挙動である。空白を含むファイル名はよくあるため、変数展開は常に "$var" と引用する。

参考: www.gnu.org

quotingvariableword-splitting

この問題を含む Linux・シェル のテストを制限時間つきで解く

Linux・シェルクイズへ