String 如何评估sed/grep/whatever提供的文本字符串?

String 如何评估sed/grep/whatever提供的文本字符串?,string,sed,unix,sh,String,Sed,Unix,Sh,这是用于unixshell编程的。它必须由多个UNIX平台支持,包括Solaris、Linux和AIX 我有这样一个场景——我要从一个文本文件中读取一个字符串,该字符串可能包含也可能不包含一个环境变量,该环境变量可能定义也可能未定义。例如: <foo.bar> This error code was found: $(error_code) $1=提供给此特定函数/脚本的行号。 $messagefile=日志文件的文件名。 $echo_flag=“-e”在Linux中,否则为空。

这是用于unixshell编程的。它必须由多个UNIX平台支持,包括Solaris、Linux和AIX

我有这样一个场景——我要从一个文本文件中读取一个字符串,该字符串可能包含也可能不包含一个环境变量,该环境变量可能定义也可能未定义。例如:

<foo.bar> This error code was found: $(error_code)
$1=提供给此特定函数/脚本的行号。
$messagefile=日志文件的文件名。
$echo_flag=“-e”在Linux中,否则为空。
$(错误代码)=42

而不是在运行时获取此信息:

<foo.bar> This error code was found: 42
找到此错误代码:42
我仍然明白这一点:

<foo.bar> This error code was found: $(error_code)
找到此错误代码:$(错误代码)

我如何确切地告诉shell脚本,应该对语句的值进行超出sed所做的进一步计算?

我不确定我是否理解您的要求,但是将
echo
命令更改为
eval echo$echo\u flag$statement
会做您想做的事情吗?

很遗憾,输入文本使用了$(error_code)作为语法,因为这看起来像是shell的进程替换。“eval”更接近您想要的,但是接受用户控制的输入并直接执行也是一种安全风险

找到此错误代码:rm-rf/


您需要做的是分析输入行的预期语法,并自行处理“error\u code”标记,测试范围内的shellvar,打印修改的输出等。

我读了三遍,但我不得不说我不明白您说的话。唯一的问题是
$(error\u code)
看起来像是命令替换而不是变量,会产生错误。在执行
eval
之前,需要进行进一步的分析。
<foo.bar> This error code was found: $(error_code)