簡體   English   中英

如何在shell腳本中將變量值的單引號插入索引?

[英]How to put single quotes insode of variable's value in a shell script?

我有一個問題,我找不到解決方案。

我正在編寫一個shell腳本,我需要能夠發送以下信息:

/usr/bin/wget --header='Content-Type: application/xml'

目前,我的腳本中包含以下內容:

#!/bin/bash
HEADER="Content-Type: application/xml"
PARAM_HEADER="--header=\'$HEADER\'"
/usr/bin/wget $PARAM_HEADER

但是,當我運行腳本時,看到的是這樣運行命令:

/usr/bin/wget '--header=\'\''Content-Type:' 'application/xml\'\'''

請幫忙!!

使用數組能夠安全保留參數邊界:

#!/bin/bash
header="Content-Type: application/xml"

params=( )                       # initialize to empty array
params+=( "--header=$header" )   # add your argument
params+=( '--header=X-Foo: something with spaces' ) # add another

/usr/bin/wget "${params[@]}"

請注意,單-vs-雙引號僅對外殼很重要-運行wget時,它會傳遞一個C字符串數組,並且不知道在外殼上使用哪種引號來保護那些字符串(或者,就此而言,它是否完全是使用Shell啟動的)。 set -x給出的那些字符串的表示形式就是這樣-用shell語法表示。

有關問題根源和替代方法的詳細信息,請參見BashFAQ#50

暫無
暫無

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

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