0
那裏, 在我的bash腳本,我定義了一個命令行功能:如何將變量傳遞給自定義函數在bash腳本
rep() {
find ./ -type f -exec sed -i -e 's/$1/$2/g' {} \;
}
源之後的〜/ .bashrc
當我輸入:rep get foo
它不起作用。有人知道這裏發生了什麼嗎?
那裏, 在我的bash腳本,我定義了一個命令行功能:如何將變量傳遞給自定義函數在bash腳本
rep() {
find ./ -type f -exec sed -i -e 's/$1/$2/g' {} \;
}
源之後的〜/ .bashrc
當我輸入:rep get foo
它不起作用。有人知道這裏發生了什麼嗎?
sed的's/$1/$2/g'
圍繞單引號防止bash的從$1
和$2
函數參數的評估爲字符串 - 您的命令,現在將它換一個文件$1
爲$2
。
請嘗試使用雙引號代替。
rep() {
find . -type f -exec sed -i -e "s/$1/$2/g" {} \;
}
實際上,OP的嘗試不會交換'$ 1'字面值,因爲正則表達式中的'$'代表行結束。在行結束後顯然沒有任何東西,所以'$ 1'永遠不會匹配任何東西;所以OP的腳本根本不會做任何事情(除了不必要的複製文件)。 – tripleee
「它不工作」是非常不確定的。在閱讀答案之前,我認爲你的代碼無法以某種方式定義函數。我在錯誤的軌道上遇到了問題,但隨着[幫助部分](http://stackoverflow.com/help)中的說明放大很多次,您希望下次能夠儘可能具體。 – tripleee