[英]How to handle special characters in command line arguments for a shell script
我有以下 shell 腳本,我只想打印出傳入的第一個參數
代碼:
#!/bin/bash
if [ "$1" == "" ]; then
exit 1
fi
echo $1
假設腳本的名稱是testarg.sh
,其調用方式如下 - testarg.sh abc
。 偉大的!
如果我傳遞像“abc”或“xyz123”這樣的簡單參數,上面的shell腳本就可以工作。 並像testarg.sh xyz123
一樣調用它testarg.sh xyz123
打印出“xyz123”。 都好!
問題:
但是,如果我傳遞帶有特殊字符的復雜字符串,則是否會准確打印內容。 假設我在下面這樣稱呼它:
./testarg.sh $6$nB3/jwAqgRcS9LN7$8c5InVbk5SLFiwuz9Xm6EHHRuZHMI0ggMhmxJ7Pr7NuBZ0TXtProuZ6LpQ6ZrFySly12cbGmWHsFpukEKAzdW.
題:
在上面的電話中,我想通過$6$nB3/jwAqgRcS9LN7$8c5InVbk5SLFiwuz9Xm6EHHRuZHMI0ggMhmxJ7Pr7NuBZ0TXtProuZ6LpQ6ZrFySly12cbGmWHsFpukEKAzdW.
作為參數並完全按原樣打印出來,包括斜線和點。 我需要應用特殊的技巧嗎?
我不希望我的腳本的用戶費心為斜杠插入特殊的轉義字符。 有沒有一種方法可以在我的腳本中很好地處理這個問題並獲得$1
的價值,因為它可以准確地打印出來?
您需要在參數周圍使用單引號調用腳本。 沒有辦法通過更改腳本的代碼來完成這項工作。
./testarg.sh '$6$nB3/jwAqgRcS9LN7$8c5InVbk5SLFiwuz9Xm6EHHRuZHMI0ggMhmxJ7Pr7NuBZ0TXtProuZ6LpQ6ZrFySly12cbGmWHsFpukEKAzdW.'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.