CPU统计命令单独运行正常,创建别名后awk报语法错误
解决awk别名语法错误问题
问题核心:用双引号定义别名时,Bash会优先解析$1,将其替换为当前Shell的位置参数(此处为空),导致awk实际收到的代码是{sum+="} END {print sum}",触发语法错误。
两种修复方案:
方案1:转义$符号
在$1前添加反斜杠,阻止Shell解析该变量,让awk能正确接收$1:alias totalcpu="ps -A -o pcpu | tail -n+2 | awk '{sum+=\$1} END {print sum}'"方案2:用单引号包裹整个别名
利用Shell单引号不解析变量的特性,同时对awk代码内的单引号进行转义处理:alias totalcpu='ps -A -o pcpu | tail -n+2 | awk '\''{sum+=$1} END {print sum}'\'''
执行修复后的别名命令,即可正常计算并输出总CPU使用率。
内容的提问来源于stack exchange,提问作者Kreshanth Subramonia Thangam
相关产品推荐
相关产品推荐

