我正在解析网站,应将部分唤醒数据写入变量:
grep -o -E 'Date:.*Name'|sed -e 's/Date:/|/g' -e 's/Type/|/g' -e 's/Name/|/g'| awk -F '|' '{print $3"|"$1"|"$2}'
并且只有最后一个awk应该写在变量中。
简单尝试:
body=$(awk -F '|' '{print $3"|"$1"|"$2}')| echo $body
-空输出
答案 0 :(得分:0)
body=$(awk -F '|' '{print $3"|"$1"|"$2}')| echo $body
由于|
创建了一个子Shell并在子Shell中执行了echo $body
,因此将给出空的输出。要使其显示body
的值,请将其更改为:
body=$(awk -F '|' '{print $3"|"$1"|"$2}'); echo $body
达到预期目标的正确方法是使用命令替换:
variable=$(grep -o -E 'Date:.*Name'|sed -e 's/Date:/|/g' -e 's/Type/|/g' -e 's/Name/|/g'| awk -F '|' '{print $3"|"$1"|"$2}' )
或者,您可以使用read来获取值,但不能在子shell外部使用它。
grep -o -E 'Date:.*Name'|sed -e 's/Date:/|/g' -e 's/Type/|/g' -e 's/Name/|/g'| awk -F '|' '{print $3"|"$1"|"$2}' | read body; echo $body
echo $body #will give empty here since the value of body existed only in subshell