簡體   English   中英

如何轉義從命令行參數存儲為變量的特殊字符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM