bash从输入字符串执行命令?

时间:2016-03-01 02:14:45

标签: bash

我遇到了一个问题,我无法在从文件读入的字符串中执行命令。我正在执行以下代码:

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

修改:为清楚起见,$file line_num处的字符串为${red}tin2${reset}

我得到的输出是:

${red}tin2${reset}

如果我改为string="${red}tin2${reset}",则输出将只是tin2(红色文字颜色)。所以我不确定为什么$ {red}在第一种情况下没有执行,因为它似乎在字符串中存储相同。

1 个答案:

答案 0 :(得分: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