簡體   English   中英

bash-轉義變量SSH命令而不對其進行更改

[英]bash - escape variable SSH command without altering it

我正在使用文件內容作為參數的bash腳本中運行命令。 這里是一個簡化的例子:

USER=$(<$fileA)
PASSWORD=$(<$fileB)
wget -u $USER -p $PASSWORD

但是,用戶可以將文件的內容設置為任何值。 我以為我需要逃避這個問題,但是我不知道該怎么做,尤其是在不會更改$ PASSWORD的情況下。 否則,密碼顯然將不起作用。

謝謝

您可能只需要在變量周圍添加引號即可。

wget -u "$USER" -p "$PASSWORD"

如果您碰巧在變量末尾捕獲換行符,則可能要使用以下命令刪除它:

wget -u "${USER%$'\n'}" -p "${PASSWORD%$'\n'}"

${var}語法與$var等效,但是花括號允許使用bash操作變量。 通過在結尾花括號前添加%$'\\n'%表示刪除文本$'\\n' ,這意味着刪除尾隨的換行符(如果有)。

在最壞的情況下,您可能會得到換行符和回車符(可能是文件是由Windows中的文本編輯器生成的),但是您也可以處理它:

wget -u "${USER%%[$'\n'$'\r']*}" -p "${PASSWORD%%[$'\n'$'\r']*}"

這次,搜索到的文本為[$'\\n'$'\\r']* ,表示“第一個換行符( \\n或回車符( \\r )及其后的所有內容”, %%運算符表示“刪除最后的最長序列”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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