第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

請(qǐng)教關(guān)于bash中的間接變量分配

請(qǐng)教關(guān)于bash中的間接變量分配

人到中年有點(diǎn)甜 2019-11-03 10:04:10
似乎建議在bash中進(jìn)行間接變量設(shè)置的推薦方法是使用eval:var=x; val=fooeval $var=$valecho $x  # --> foo問題是通常的問題eval:var=x; val=1$'\n'pwdeval $var=$val  # bad output here(由于建議在很多地方使用,因此我想知道有多少腳本容易受到此攻擊...)在任何情況下,使用(轉(zhuǎn)義)引號(hào)的明顯解決方案實(shí)際上都不起作用:var=x; val=1\"$'\n'pwd\"eval $var=\"$val\"  # fail with the above問題是bash在(with ${!foo})中包含了間接變量引用,但是我看不到任何這樣的方法來進(jìn)行間接賦值-是否有理智的方法來做到這一點(diǎn)?作為記錄,我確實(shí)找到了解決方案,但這并不是我認(rèn)為的“理智” ...:eval "$var='"${val//\'/\'\"\'\"\'}"'"
查看完整描述

3 回答

?
qq_笑_17

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超7個(gè)贊

避免使用可能帶來的安全隱患的一種更好的方法eval是


declare "$var=$val"

請(qǐng)注意,這declare是typesetin 的同義詞bash。該typeset命令得到更廣泛的支持(ksh并且zsh也可以使用它):


typeset "$var=$val"

在的現(xiàn)代版本中bash,應(yīng)使用nameref。


declare -n var=x

x=$val

它比更加安全eval,但仍然不夠完美。



查看完整回答
反對(duì) 回復(fù) 2019-11-04
?
嗶嗶one

TA貢獻(xiàn)1854條經(jīng)驗(yàn) 獲得超8個(gè)贊

Bash有一個(gè)擴(kuò)展printf,可以將其結(jié)果保存到變量中:


printf -v "${VARNAME}" '%s' "${VALUE}"

這樣可以防止所有可能的轉(zhuǎn)義問題。


如果您對(duì)使用無效的標(biāo)識(shí)符$VARNAME,該命令將失敗并返回狀態(tài)代碼2:


$ printf -v ';;;' foobar; echo $?

bash: printf: `;;;': not a valid identifier

2



查看完整回答
反對(duì) 回復(fù) 2019-11-04
?
胡子哥哥

TA貢獻(xiàn)1825條經(jīng)驗(yàn) 獲得超6個(gè)贊

eval "$var=\$val"

的參數(shù)eval應(yīng)始終是用單引號(hào)或雙引號(hào)引起來的單個(gè)字符串。在極端情況下,所有偏離此模式的代碼都具有某些意外行為,例如帶有特殊字符的文件名。


當(dāng)evalshell擴(kuò)展參數(shù)to時(shí),將$var其替換為變量名,并將其\$替換為一個(gè)簡單的美元。因此,評(píng)估的字符串變?yōu)椋?/p>


varname=$value

這正是您想要的。


通常,所有形式的表達(dá)式都$varname應(yīng)該用雙引號(hào)引起來。只有兩個(gè)地方可以省略引號(hào):變量賦值和case。由于這是變量分配,因此此處不需要引號(hào)。不過,它們不會(huì)受到傷害,因此您也可以將原始代碼編寫為:


eval "$var=\"the value is $val\""



查看完整回答
反對(duì) 回復(fù) 2019-11-04
  • 3 回答
  • 0 關(guān)注
  • 299 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)