有谁可以告诉我为什么这不起作用?
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
答案 0 :(得分:5)
因为sed
脚本是单引号,这会阻止所有扩展:
用单引号括起字符可保留引号中每个字符的字面值。
将单引号更改为双引号应该有所帮助:
用双引号括起字符会保留引号内所有字符的字面值,但$,`,\除外,当历史记录扩展为 启用,!字符$和`在双引号内保留其特殊含义。
答案 1 :(得分:3)
因为您使用的是单引号。尝试:
Temp=$(sed -n "/${Arr[$index]}/,/${Arr[$((index+1))]}/p" $Text);