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

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

Bash中的動態變量名

Bash中的動態變量名

米脂 2019-06-06 14:34:27
Bash中的動態變量名我對巴什劇本很困惑。我有以下代碼:function grep_search() {     magic_way_to_define_magic_variable_$1=`ls | tail -1`     echo $magic_variable_$1}我希望能夠創建一個變量名,其中包含命令的第一個參數,并帶有例如ls.為了說明我想要的$ ls | tail -1stack-overflow.txt $ grep_search() open_box stack-overflow.txt那么,我應該如何定義/聲明$magic_way_to_define_magic_variable_$1在劇本里我該怎么稱呼它呢?我試過了eval, ${...}, \$${...}但我還是很困惑。
查看完整描述

3 回答

?
慕桂英4014372

TA貢獻1871條經驗 獲得超13個贊

使用關聯數組,命令名作為鍵。

# Requires bash 4, thoughdeclare -A magic_variable=()function grep_search() {
    magic_variable[$1]=$( ls | tail -1 )
    echo ${magic_variable[$1]}}

如果不能使用關聯數組(例如,必須支持bash3)你可以用declare若要創建動態變量名,請執行以下操作:

declare "magic_variable_$1=$(ls | tail -1)"

并使用間接參數展開來訪問該值。

var="magic_variable_$1"echo "${!var}"

見BashFAQ:間接評價間接/參考變量.


查看完整回答
反對 回復 2019-06-06
?
RISEBY

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

我最近一直在尋找更好的方法。聯想數組聽起來對我來說太過分了。看看我發現了什么

suffix=bzz
declare prefix_$suffix=mystr

.然后.

varname=prefix_$suffix
echo ${!varname}


查看完整回答
反對 回復 2019-06-06
?
墨色風雨

TA貢獻1853條經驗 獲得超6個贊

下面的示例返回$name_of_var的值

var=name_of_var
echo $(eval echo "\$$var")


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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