![](/img/trans.png)
[英]How to print current date saved in a variable in an echo sentence for shell scripting?
[英]Shell Scripting: Echo vs save to variable
为什么这些做不同的事情?
ENTRY="banana#Apple"
HOST_ID=$ENTRY | awk -F '#' '{print $2}'
echo $HOST_ID
echo $ENTRY | awk -F '#' '{print $2}'
在echo命令中,数据按预期显示。 在“保存到变量”命令中,数据不是,变量保留为空。
这个:
HOST_ID=$ENTRY | awk -F '#' '{print $2}'
意味着:
HOST_ID='banana#Apple' | awk -F '#' '{print $2}'
换句话说,您要在单独的子HOST_ID='banana#Apple'
运行两个命令HOST_ID='banana#Apple'
和awk -F '#' '{print $2}'
-并将其中一个输出传递给另一个。 这并没有完成任何事情: HOST_ID='banana#Apple'
产生任何输出,因此awk
命令没有获得任何输入,因此它不会输出任何内容。 (由于子外壳,即使HOST_ID='banana#Apple'
部分也无效:它在子外壳中而不是在运行总体命令的父外壳中设置该变量。因此该值几乎立即消失了)
相反,您要编写:
HOST_ID="$(echo "$ENTRY" | awk -F '#' '{print $2}')
要么:
HOST_ID="$(awk -F '#' '{print $2}' <<< "$ENTRY")
或(如果您只希望$ENTRY
有两个字段):
HOST_ID="${ENTRY#*#}"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.