我设置了一个变量:
myvar='/home/user/shares/D/iPhoto\ Library\ Main.migratedphotolibrary/Data.noindex/2002/102008\ \ name\ lname\ event/PICT0002_2_face0.jpg'
然后尝试对这个变量进行 cat :
cat ${myvar}
结果如下:
cat: '/home/user/shares/D/iPhoto': 没有此文件或目录 cat: 'Library': 没有此文件或目录 cat: 'Main.migratedphotolibrary/Data.noindex/2002/102008': 没有此文件或目录 cat: '': 没有此文件或目录 cat: 'name': 没有此文件或目录 cat: 'lname': 没有此文件或目录 cat: event/PICT0002_2_face0.jpg: 没有此文件或目录
cat "${myvar}"
结果如下:
cat: '/home/user/shares/D/iPhoto\ Library
Main.migratedphotolibrary/Data.noindex/2002/102008\ \ name\ lname
event/PICT0002_2_face0.jpg': 没有该文件或目录
使用 myvar 的内容直接输入到 cat 中,它可以工作并且文件内容可以正确输出:
cat /home/user/shares/D/iPhoto\ Library\ Main.migratedphotolibrary/Data.noindex/2002/102008\ \ name\ lname\ event/PICT0002_2_face0.jpg
<文件内容在这里输出>
如何将文件路径分配给变量并使用 cat(或 exiftool 等)输出文件内容?
答案1
设置变量时,不要在单引号中使用反斜杠。
myvar='/home/user/shares/D/iPhoto Library Main.migratedphotolibrary/Data.noindex/2002/102008 name lname event/PICT0002_2_face0.jpg'
或者,使用反斜杠但不用引号:
myvar=/home/user/shares/D/iPhoto\ Library\ Main.migratedphotolibrary/Data.noindex/2002/102008\ \ name\ lname\ event/PICT0002_2_face0.jpg
两者都将变量设置为相同的值。然后,使用变量时使用双引号:
cat "$myvar"