

たとえば、次のような形式で擬似 cp をシェルスクリプトで作成したとします。

[code]

    #!/bin/sh
    
    content=$(cat "$1")
    printf '%s\n' "$content" > "$2"
    
[/code]

これは、だいたいのケースで、第２引数のパスへと作成されたファイルの中身と、第１引数のパスで指定されていたもともとのファイルの差分はなくなると思っていますが、はたして、ありとあらゆるファイルに対してそれは成立するのか、と疑問に思いました。

### 質問

  * 一旦変数で(標準)入力を受け取って、それをダブルクォートの中で変数展開してどこかに書き出す場合、その出力内容は、もともとの入力内容から、変化する場合はありますか？変化するとして、どのような場合に変化してしまうのでしょうか？


CC BY-SA 4.0
2018-12-10T02:43:04.267
51080
2019-09-01T12:02:38.217
754
question
unix sh posix
ダブルクォートの中の変数展開は、どこまで正しく動作する？


metropolisさんが回答されている0x00もそうですが、  
ファイルの終わりが改行コードでない場合、コピー後のファイル末尾に改行コードが付加されてしまいます。


CC BY-SA 4.0
2019-09-01T12:02:38.217
57749
2019-09-01T12:02:38.217
35558
51080
answer