2013-04-03 61 views
3

取我做一些shell腳本的內容。得到變量的名字是從另一個變量

我用這種結構用於創建新變量:

eval ${ARG}_ext=fastq 

,因爲這樣我就可以直接使用這些新創建的變量這樣它的工作原理相當不錯:

$file_ext 

現在我要指派值到被稱爲擴展名的變量:

extension= 

指定的值e應該是變量$ {ARG} _ext中的一個。請,我該怎麼做?

我已經試過

extension=eval ${ARG}_ext; 

,但是這給了我名字的變量,我想它的價值。謝謝。

回答

5

嘗試:

$ extension=$(eval "echo \$${ARG}_ext") 
+0

這是工作,謝謝:-))(我也理解你的代碼,漂亮的小竅門) – Perlnika

1

不是一個直接的答案,但你有沒有考慮過使用關聯數組來代替:

declare -A myhash 
ARG=file 
myhash[${ARG}_ext]='fastq' 
extension="${myhash[${ARG}_ext]}" 
echo "$extension" 

注意申報創建如果一個函數內部使用的局部變量,所以聲明如果您在全球範圍內需要它,可以在全局範圍內關聯數組(bash中的最新版本添加-g(全局)選項來聲明,解決了這個問題。)

相關問題