我試圖找到所有有BOM的SQL檔案,使用以下bash腳本:
我試圖找到所有有BOM的SQL檔案。
#!/bin/bash
set -x
printf '
開始!
'
caminho="$PWD"。
parametros="-type f -name "*.sql""
$(find ${caminho} ${parametros} -exec grep -l $'xEFxBBxBF'/span> {} ;)
但是我總是得到這樣的輸出:
find /home/pablo/SQL -name ComBOM.sql ComVirgula.sql SemBOM.sql -exec grep -l $xEFxBBxBF {} ;
查找:路徑必須在運算式之前:`ComVirgula.sql'
查找:在謂詞`-name'之后可能存在未參考的模式?
關于這個問題有很多問題,都是通過在-name上加雙引號來解決的,但這對我來說并不奏效。而且這也是人說的。
uj5u.com熱心網友回復:
在一個用相同型別的引號字符引證的字串中添加一對未轉義的(因此是語法性的)引號,根本沒有任何作用,因為這些引號只是相互抵消。而如果你做了轉義引號,那么在擴展時它們將被視為資料而不是語法,所以代碼仍然不會按要求進行,但會出現不同的錯誤(這種情況BashFAQ #50有詳細介紹)。
使用一個陣列,而不是一個字串,這樣你就可以將你的引數完全按引號傳遞,而不需要球化。
代替:
parametros="-type f -name "*.sql""
...改用:
parametros=( -type f -name "*.sql"/span> )
然后再:
查找"$PWD" "${parametros[@]}" -exec grep -l $'xEFxBBxBF' {}。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/332514.html
標籤:
