我正在使用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