簡體   English   中英

如何處理 shell 腳本的命令行參數中的特殊字符

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

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