亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

請問如何在bash中將變量的值用作另一個變量的名稱

請問如何在bash中將變量的值用作另一個變量的名稱

呼喚遠方 2019-08-03 11:03:40
如何在bash中將變量的值用作另一個變量的名稱我想聲明一個變量,其名稱來自另一個變量的值,我編寫了以下代碼:a="bbb"$a="ccc"但沒起作用。完成這項工作的正確方法是什么?
查看完整描述

3 回答

?
天涯盡頭無女友

TA貢獻1831條經驗 獲得超9個贊

eval是用來解決這個問題的,但如果你天真地這么做,就會有一些令人討厭的逃避問題。這類事情通常是安全的:

name_of_variable=abceval $name_of_variable="simpleword"   # abc set to simpleword

這破壞了:

eval $name_of_variable="word splitting occurs"

解決辦法:

eval $name_of_variable="\"word splitting occurs\""  # not anymore

最終修正:將要賦值的文本放入變量中。讓我們稱之為safevariable..然后你可以這樣做:

eval $name_of_variable=\$safevariable  # note escaped dollar sign

逃離美元標志解決了所有的逃逸問題。美元符號逐字保存到eval功能,它將有效地執行以下操作:

eval 'abc=$safevariable' # dollar sign now comes to life inside eval!

當然,這項任務對任何事情都是免疫的。safevariable能包含*、空間,$等(我們假設的警告是name_of_variable只包含一個有效的變量名,我們可以自由使用:沒有什么特別的東西。)




查看完整回答
反對 回復 2019-08-04
?
慕仙森

TA貢獻1827條經驗 獲得超8個贊

你可以用declare!,就像這樣:

John="nice guy"programmer=Johnecho ${!programmer} # echos nice guy

第二個例子:

programmer=Inesdeclare $programmer="nice gal"echo $Ines # echos nice gal


查看完整回答
反對 回復 2019-08-04
?
森林海

TA貢獻2011條經驗 獲得超2個贊

這可能對你有用:

foo=bar
declare $foo=baz
echo $bar
baz

或者這個:

foo=bar
read $foo <<<"baz"echo $bar
baz



查看完整回答
反對 回復 2019-08-04
  • 3 回答
  • 0 關注
  • 707 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號