2016-03-01 78 views
0

我遇到了一個問題,我無法執行從文件讀入的字符串中的命令。我執行以下代碼:bash從輸入字符串中執行命令?

red=`tput setaf 1` 
reset=`tput sgr0` 
string=$(sed "${line_num}q;d" $file) 
printf "%s" "$string" 

編輯:爲清楚起見,在line_num$file字符串是${red}tin2${reset}

和輸出我得到的是:

${red}tin2${reset} 

如果我不是做string="${red}tin2${reset}"輸出將簡單地通過tin2(以紅色文本顏色)。所以我不確定爲什麼$ {red}在我的第一種情況下沒有執行,當它看起來被存儲在字符串中時是相同的。

+0

在printf行之後添加** exec $ string **。 –

+0

不工作:第14行:exec:$ {red} tin2 $ {reset}:找不到 – mtveezy

+0

對不起,我的意思是** eval **我在考慮perl,這很類似。 –

回答

0

好吧,找到了一個難看的解決方案。使printf "%s" "$string"爲字符串,eval爲字符串。

red=`tput setaf 1` 
reset=`tput sgr0` 
string=$(sed "${line_num}q;d" $file) 
string2="printf \"%s\" \"$string\"" 
eval $string2