我有一個關於在Bash腳本中使用變量作爲命令輸入的簡單問題。我想編寫一個腳本,它自動將目錄foo
的某些內容複製到通過ssh
連接到另一個目錄bar
的嵌入式計算機。在變量中使用變量作爲函數參數
換句話說,我希望把下面的命令到一個更容易維護腳本:
ssh -r /foo/{file1,file2,dir1,*.h,*.hpp,*.c,*.cpp} [email protected]:~/bar
到目前爲止,我有以下幾點:
#!/bin/bash
SOURCE='/foo';
FILES='{file1,file2,dir1,*.h,*.hpp,*.c,*.cpp}';
DESTINATION='[email protected]:~/bar';
set -x
scp -r $SOURCE/$FILES $DESTINATION
set +x
然而,這被作爲執行:
ssh -r '/foo/{file1,file2,dir1,*.h,*.hpp,*.c,*.cpp}' '[email protected]:~/bar'
我確定我在某處使用了錯誤的引號或括號,但我收費我喜歡我嘗試過的一切。感謝任何能夠幫助新手的人。 :)
那麼你肯定讓我更接近解決方案。在你的方法中,FILELIST得到了擴展,但scp的參數仍然出現在單引號內,所以在我的情況下(其中'/ foo'是當前目錄'.','DESTINATION'是引用主目錄''' ,那些符號沒有得到解析,我不得不修改你的解決方案來閱讀'scp -r $(eval echo「$ FILELIST」)$(eval echo $ DESTINATION)''來工作,謝謝你的幫助! –