在写linux shell 的时候出错:integer expression expected,请各位大神帮忙

在写linux shell 的时候出错:integer expression expected,请各位大神帮忙,第1张

有如�¸.shell脚本,用于定时查看某目录的大小,如果目录空间超过1G则报警[root@ ~]# vi test.sh#!/bin/bash#初始化环境变量source .bash_profile#检查归档目录的大小arc_yiyong=`du -sh /root/test | awk '{print $1}' | cut -f 1 -d "G"`#如果目录大于1G就报警if [ $arc_yiyong -ge 1 ]then echo "报警:目录已到1G"fi查得当前该目录大小为3.4G,应该会报警[root@ ~]# du -sh /root/test | awk '{print $1}'3.4G脚本执行时报integer expression expected错误[root@ ~]# ./test.sh ./test.sh: line 7: [: 3.4: integer expression expected根据字面意思if [ $arc_yiyong -ge 1 ]中ge 只能比较整数,但返回的3.4是小数。同样ne、gt、lt、le、eq等也是只能比较整数,如果比较小数就会报integer expression expected。考虑可以去掉".4",并不影响程序功能,再过滤一次".",即cut -f 1 -d ".",再无报错,且在目录大小为整数时也无报错。最终为:arc_yiyong=`du -sh OL6.1 | awk '{print $1}' | cut -f 1 -d "G" | cut -f 1 -d "."`

linxu下�š.sh命令相当于是shell命令语言的解释器。下面由我为大家整理了linux的sh命令的详细解释的相关知识,希望对大家有帮助!

一、Linux中的sh命令的详细解释

sh命令是shell命令语言解释器,执行命令从标准输入读取或从一个文件中读取。通过用户输入命令,和内核进行沟通!Bourne Again Shell (即bash)是自由软件基金会(GNU)开发的一个Shell,它是Linux系统中一个默认的Shell。Bash不但与Bourne Shell兼容,还继承了C Shell、Korn Shell等优点。

语法

bash [options] [file]

选项

-c string:命令从-c后的字符串读取。

-i:实现脚本交互。

-n:进行shell脚本的语法检查。

-x:实现shell脚本逐条语句的跟踪。

二、Linux中的sh命令的具体例子

使用-x选项跟踪脚本调试shell脚本,能打印出所执行的每一行命令以及当前状态:

[root@AY1307311912260196fcZ satools]# sh -x check_ssh_login.sh

+ DEFINE=30

+ cat /var/log/secure

+ awk '/Failed/ {++ip[$(NF-3)]} END {for (i in ip) print i"="ip[i]}'

++ cat /root/satools/black.txt

+ for i in '`cat /root/satools/black.txt`'

++ echo 121.42.0.16=1427

++ awk -F= '{print $1}' + IP=121.42.0.16

++ echo 121.42.0.16=1427

++ awk -F= '{print $2}'

+ NUM=1427

+ '[' 1427 -gt 30 ']'

+ grep 121.42.0.16 /etc/hosts.deny

+ '[' 1 -gt 0 ']'

+ echo sshd:121.42.0.16

+ echo vsftpd:121.42.0.16

+ for i in '`cat /root/satools/black.txt`'

++ echo 121.42.0.72=276

++ awk -F= '{print $1}'

+ IP=121.42.0.72

++ awk -F= '{print $2}'

++ echo 121.42.0.72=276

+ NUM=276 + '[' 276 -gt 30 ']'

+ grep 121.42.0.72 /etc/hosts.deny

+ '[' 1 -gt 0 ']'

+ echo sshd:121.42.0.72

+ echo vsftpd:121.42.0.72

三、Linux中对.sh文件的操作命令

1、创建test.sh文件

touch test.sh

2、编辑sh文件

vi test.sh

3、保存退出

敲击esc, 然后输入 :wq ,回车退出

4、添加可执行权限,当然默认就是可执行的。

chmod +x test.sh

5、运行文件

(1)./test.sh

(2)sh test.sh

6、删除文件

rm test.sh


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7279893.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-03
下一篇 2023-04-03

发表评论

登录后才能评论

评论列表(0条)

保存