[英]how to extract particular string with special character from each line of a file
[英]How to escape a special character that is stored as variable from a command line argument
嗨,我想編寫一個腳本,允許我在命令行參數中使用任何字符(包括特殊字符)。 因此,如果我這樣調用腳本,則不應有錯誤:
./myscript file *
在腳本中,我想在帶有該符號的目錄中查找文件(但請注意,它不一定是該符號可以是%,@,#等。因此,即時通訊使用find但不確定如何進行轉義。
search = $1
find=$(find $search -name "*$2")
如果我要查找的文件帶有符號,則通知該人,但是如果沒有將符號添加到目錄中,則我又不確定如何對其進行轉義。 以下是我用來更改它的代碼,但也需要對其進行轉義。
mv $search $search$2
關於轉義的任何想法,我都照常進行,但得到了奇怪的結果。 即
find=$(find $search -name "*\$2")
mv $search $search\$2
如果我理解正確,那么調用必須看起來像這樣,以避免在調用腳本之前外殼擴展*
。
./myscript file '*'
在腳本內部,只需引用參數擴展即可。 但是,您必須將反斜杠傳遞給-name
的參數,以便find
本身也不會對字符進行特殊處理。
# No spaces around the equal sign!
search=$1
find=$(find "$search" -name \*\'"$2")
# ...
mv "$search" "$search$2"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.