我正在使用bash来制作一个使用irecovery的小程序,这是一款适用于iOS设备的工具,我试图自动化使用它的过程。未被程序接受的bash变量
我已经创建了在特定文件夹中搜索文件的变量,所以其他用户可以对不同文件使用相同的程序,但问题是变量不会被文件的名称替换,所以“irecovery “无法访问它们。
我的代码看起来像这样
#!/bin/bash
dtree=$(find Downgrade -type f -iname device*)
ramdisk=$(find Downgrade -type f -name *.dmg)
kernel=$(find Downgrade -type f -iname kernel*)
./irecovery -s <<EOF
/send $dtree
devicetree
/send $ramdisk
ramdisk
/send $kernel
bootx
reboot
EOF
现在我怎么会得到的bash打印出变量它由irecovery之前,还是让irecovery使用bash中定义的变量?
不能安全地存储文件名列表中的标量变量:一个文件名可以包含除NUL之外的任何字符,因此可以标量变量。无论如何, –
- 这种形式的heredocs *做*展开变量;声称他们并不是完全错误的,*但是*由于名字没有适当的引用而通过扩展阶段就会出现大量的bug。 –
引用'-iname'或'-name'后面的参数以避免你的bash扩展你的通配符('*')。 – Cyrus