我有一個腳本,它登錄到遠程主機以拉取目錄列表,以便稍後向用戶顯示選項。這一切都很完美,直到其中一些目錄開始有空間。我已經嘗試了幾種語法,並且使用了這個命令,我現在處於我的繫繩的末尾。原來的命令是這樣的:使用包含命令空格的元素生成bash腳本數組
SERVERDIRS=($(sshpass -p $PASS ssh -oStrictHostKeyChecking=no [email protected]$SERVER ls -l --time-style="long-iso" $FROMFOLDER | egrep '^d' | awk '{print $8}'))
我首先改變了這種代碼能夠讀取的空間是這樣的:
SERVERDIRS=($(sshpass -p $PASS ssh -oStrictHostKeyChecking=no [email protected]$SERVER ls -l --time-style="long-iso" $FROMFOLDER | egrep '^d' | cut -d' ' -f8-))
但是這導致每個字被識別爲一個變量。我嘗試了很多方法來嘗試解決這個問題,其中兩個是:
SERVERDIRS=($(sshpass -p $PASS ssh -oStrictHostKeyChecking=no [email protected]$SERVER ls -d $FROMFOLDER* |rev| cut -d'/' -f1|rev|sed s/^/\"/g|sed s/$/\"/g))
SERVERDIRS=($(sshpass -p $PASS ssh -oStrictHostKeyChecking=no [email protected]$SERVER ls -d $FROMFOLDER* |rev| cut -d'/' -f1|rev|sed 's/ /\\ /g'))
SERVERDIRS=(`sshpass -p $PASS ssh -oStrictHostKeyChecking=no [email protected]$SERVER ls -d $FROMFOLDER* |rev| cut -d'/' -f1|rev|sed 's/ /\\ /g'`)
如何解決這些目錄以正確分隔元素?
我不確定它是否可以正常工作,但是您可以嘗試將$ IFS更改爲空間以外的內容,以便空格不會導致腳本將空格分隔的字符串解析爲單獨的attibutes? [這可能有助於](http://stackoverflow.com/questions/4128235/bash-shell-scripting-what-is-the-exact-meaning-of-ifs-n) – andrew 2015-02-24 01:55:30
我會從最明顯的事情開始,雙引號您的變量,以防止空白問題。 「$ FROMFOLDER」應該做我猜的詭計。 – tvm 2015-02-24 01:55:33