未终止的正则表达式和意外的换行符

未终止的正则表达式和意外的换行符

awk执行命令时出现错误

echo $(awk 'BEGIN {printf "%.2f\n",'$sizes'/1073741824}')GB >> $MAINS/logs/bks1

这是为了将整数转换为大小(GB)。但我遇到这样的错误

awk: cmd. line:1: BEGIN {printf "%.2f GB\n",/1073741824}
awk: cmd. line:1:                            ^ unterminated regexp
awk: cmd. line:1: BEGIN {printf "%.2f GB\n",/1073741824}
awk: cmd. line:1:                                       ^ unexpected newline or end of string

有时效果很好

我应该在执行该命令之前添加睡眠吗?谢谢大家,感谢您的时间和帮助。

答案1

sizes变量为空时,它将被替换为空字符串,如预期的那样。在脚本的相关部分中,awk期望任何以斜杠开头的字符串都是正则表达式的开头,但只有当它以另一个斜杠结尾时,它才是有效的正则表达式。您需要确保sizes脚本不为空才能工作。

set -o nounset收到脚本中未定义(非空)变量的通知,并结合使用以-o errexit在出现此类错误时停止脚本。

相关内容