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

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

按名稱間接查找shell變量

按名稱間接查找shell變量

開心每一天1111 2019-10-12 09:42:41
假設我在另一個變量中存儲了一個變量名:myvar=123varname=myvar現在,我想僅通過使用$ varname變量獲得123。有直接的方法嗎?我發現沒有內置的bash可以按名稱查找,因此提出了以下建議:function var { v="\$$1"; eval "echo "$v; }所以var $varname  # gives 123最終看起來還不錯,但是我想知道我是否錯過了更明顯的事情。提前致謝!
查看完整描述

3 回答

?
catspeake

TA貢獻1111條經驗 獲得超0個贊

在bash的手冊頁中:


${!varname}

如果參數的第一個字符是感嘆號,則將引入變量間接尋址級別。Bash使用由其余參數形成的變量的值作為變量的名稱;然后擴展此變量,并在其余替換中使用該值,而不是參數本身的值。這稱為間接擴展。


查看完整回答
反對 回復 2019-10-12
?
忽然笑

TA貢獻1806條經驗 獲得超5個贊

沒有直接的符合Posix的語法,只有一個bashism。我通常這樣做:


eval t="\$$varname"

這將在任何Posix shell上都可以使用,包括那些bash登錄shell以及/bin/sh更小,更快的東西(例如)的系統ash。我喜歡bash并將其用于我的登錄shell,但我避免在命令文件中使用bashisms。


注意:編寫特定于bash的腳本的一個問題是,即使您可以指望安裝的bash,它也可能在路徑上的任何位置。在這種情況下,最好使用完全通用的/usr/bin/env shebang樣式,但是請注意,這仍然不是100%可移植的,并且存在安全問題。


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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