嗨我有很多目錄,其名稱中有空格。我有一些腳本可以在它們上運行。 下面是一個示例腳本目錄名稱中的空格導致錯誤
#!/bin/bash
docid='/home/deel/PDF/rant/spr 2008 Shree rose Visheshank'
p=1
while [ $p -lt 117 ]; do
cp $docid/$p.pdf ./
p=$p+1
done
在執行上面的腳本我收到以下錯誤
cp: cannot stat `/home/deel/PDF/rant/spr': No such file or directory
cp: cannot stat `2008': No such file or directory
cp: cannot stat `Shree': No such file or directory
cp: cannot stat `rose': No such file or directory
cp: cannot stat `Visheshank/1.pdf': No such file or directory
./d2.sh: line 5: [: 1+1: integer expression expected
我已經使用了雙引號「」嘗試,但結果是一樣的。 我應該做什麼改變?
謝謝你使這個清楚。究竟是什麼原因,它是以你解釋的方式工作? – 2012-01-11 12:09:09
p = $ [p + 1]是bashism。你可以用$((p + = 1))更便攜地進行算術運算,甚至可以更便攜地使用eval。 (「更便攜」意味着posix,「更便攜」意味着應該在70年代的炮彈中工作) – 2012-01-11 13:21:39
@RegisteredUser:'$ a'擴展爲'abc def',所以'ls $ a'擴展爲'ls abc def ',即2個參數。 'ls「$ a」'展開爲'ls「abc def」',即1個參數。 – mvds 2012-01-11 13:34:23