出力はexif
次のとおりです。
ExifMnoteCanon: Loading entry 0xcf27 ('(null)')...
ExifMnoteCanon: Loading entry 0x3ca8 ('(null)')...
ExifMnoteCanon: Loading entry 0xf88a ('(null)')...
2013:08:22 18:01:16
私のbashスクリプトはこれを変数に保存します。
datetime="$(exif --debug --machine-readable --tag=DateTimeOriginal "$file" 2>&1)"
bashパラメータ置換を使用して最後の行を抽出したいと思います。私はこれがうまくいくと思います:
datetime="${datetime##*\n}"
ただし、出力は次のようになります。
ull)')...
2013:08:22 18:01:16
これがうまくいかない理由と回避策は何ですか?
ベストアンサー1
ANSI C スタイルのエスケープシーケンスを使用して$'\n'
改行を表します。
% echo "$datetime"
ExifMnoteCanon: Loading entry 0xcf27 ('(null)')...
ExifMnoteCanon: Loading entry 0x3ca8 ('(null)')...
ExifMnoteCanon: Loading entry 0xf88a ('(null)')...
2013:08:22 18:01:16
% echo "${datetime##*\n}"
ull)')...
2013:08:22 18:01:16
% echo "${datetime##*$'\n'}"
2013:08:22 18:01:16
ご覧のとおり、そうでなければ\n
文字通り受け入れられますn
。