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