3

谁能告诉我为什么这不起作用?

Temp=$(sed -n '/"${Arr[$index]}"/,/"${Arr[$((index+1))]}"/p' $Text);

它仍然不起作用。我试图这样做:

index=0
while [ "$index" -lt "$((Arr_LEN-1))" ]; do
    Temp=$(sed -n "/${Arr[$index]}/,/${Arr[$((index+1))]}/p" $Text);       
    let "index++"
done
4

2 回答 2

6

因为sed脚本是单引号,这会阻止所有扩展:

将字符括在单引号中会保留引号内每个字符的字面值。

将单引号更改为双引号应该会有所帮助:

将字符括在双引号中会保留引号内所有字符的字面值,但 $、`、\ 以及启用历史扩展时的! 除外。字符 $ 和 ` 在双引号中保留其特殊含义。

于 2013-02-24T13:47:44.737 回答
4

因为您使用的是单引号。尝试:

Temp=$(sed -n "/${Arr[$index]}/,/${Arr[$((index+1))]}/p" $Text);
于 2013-02-24T13:47:52.753 回答