shell比较文件大小

shell比较文件大小

2023年8月2日发(作者:)

shell⽐较⽂件⼤⼩问题1[: too many arguments原因1:在使⽤ if then 语句的时候总是报下⾯问题代码⽐较if [ $a -lt 5 -o $b -gt 100 ]if [ $a −lt 5 −o $b -gt 100 ]主要差异在短横线部分,在书写的时候需要注意原因2:有问题代码如下:if [ $a == *.png -o $b == *.webp ]修改正常代码如下:if [ $a == "*.png" -o $b == "*.webp" ]在举⼀个实例:判断⼀个⽂件的内容是不是为空,使⽤语句:if test -z `cat filename`当filename为空或者只有⼀⾏没有空格的字符串的时候,⼀切正常,反之,则会报:too many arguments,甚⾄是: binary operatorexpected之类的错误。原因分析:filename中的空格回车等迷惑了bash。如果环境变量没放在双引号中,那么bash 认为条件中的⾃变量过多。可以⽤双引号将字符串⾃变量括起来消除该问题。看来是要养成将所有字符串⾃变量⽤双引号括起的习惯,将除去很多类似的编程错误。解决⽅法:给命令执⾏部分加上双引号即可:if test -z "`cat filename`"今天偶尔因解决⼀个⼩问题,遇到了⼀奇怪的问题“[ ]”和"[[ ]] "的不⼀样的效果,总结如下显⽰⼀下code: if [ -z ` lsof -i:22 ` ] //这种写法会报too many arguments,改成if [[ -z ` lsof -i:22 ` ]] then echo "the port is not running" else

echo "the port is running"fi运⾏这个简单shell脚本时,总是报too many arguments,最后才查到和版本的通⽤性是有关系的,更简单的说是,"[[ ]]"⽐"[ ]"具有更好的通⽤性,所以,为了避免这种问题的发⽣,直接将"[ ]"替换成"[[ ]]"就可以了。⽽且”[[ ]]“⽐“[ ]”⽐它有更强的容错性,也就是在"[]"可能报的错在"[[ ]]结构中可能不报错,⽐如&&,||等这样的逻辑判断,因不是本篇重点,⼀带⽽过了.问题2[: abc: integer expression expected输⼊字符串是⾮整型,但是需要的是整型的

发布者:admin,转转请注明出处:http://www.yc00.com/web/1690916547a462845.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信