shell 中 awk 分割符用 [ 或者 ] if 出现错误 too many arguments
awk 分割符用 [ 或者 ]
因为 [ 和 ] 属于 awk 的元字符,我们直接 awk -F "[" 时是不行的 ,正确的写法如下:
awk -F "\\[" abc.log
如果多个分隔符号
awk -F "[\\[\\] ]+" abc.log //这里使用了三个分隔符 [ 和 ] 和 空格 ,
后面的 + 号,表示匹配一个或这个多个
awk 的元字符有: \ ^ $ . [] | () * + ?
if 出现错误 too many arguments
例如: 判断一个文件的内容是不是为空,使用语句:
if test -z `cat filename`
当 filename 为空 或者 只有一行没有空格的字符串 的时候,一切正常,反之,则会报:too many arguments,甚至是: binary operator expected 之类的错误。
原因是:
filename中的空格回车等迷惑了bash。
解决方法:
给命令执行部分加上双引号
直接将"[ ]"替换成"[[ ]]" 。 "[[ ]]"比"[ ]"具有更好的通用性,。而且”[[ ]]“比“[ ]”比它有更强的容错性,
譬如:
if [[ $agentNum -gt $WarnNUm ]] || [[ $ipnum -gt $WarnNUm ]]; then echo "呵呵" fi
共 0 条评论