文件测试判断条件

-e FILE:测试文件是否存在
-f FILE:测试文件是否为普通文件
-d FILE:测试指定路径是否为目录
-r FILE:测试当前用户对指定文件是否有读权限
-w FILE:测试当前用户对指定文件是否有写权限
-x FILE:测试当前用户对指定文件是否有执行权限 Example:
[ -e /etc/passwd ]
[ -x /etc/shadow ]

多分支if语句

if 判断条件1;then
statement1
...
elif 判断条件2;then
statement2
...
elif 判断条件3;then
statement3
...
else
statement4
...
fi Example:
#!/bin/bash
FILES=/etc/ if [ ! -e $FILES ];then
echo no such file
elif [ -f $FILES ];then
echo file
elif [ -d $FILES ];then
echo "$FILES is directory"
else
echo unknow
fi
首先判断/etc/是否存在,如果不存在则显示no such file,然后退出脚本;如果/etc/存在,第一个判断为假,继续判断/etc/是否为普通文件,是则显示file,退出脚本;不是继续判断/etc/是否为目录,是显示一句话然后退出,所有判断都不对,最后则执行else,打印unknow

测试脚本是否有语法错误:

[root@localhost ~]# bash -n xxxx.sh
[root@localhost ~]# bash -x xxxx.sh #单步执行

位置参数的应用

#!/bin/bash

if [ -e $1 ];then         #位置参数不用在脚本中设置,执行脚本时添加位置参数
echo file
else
echo no such file
fi
[root@localhost script]# bash file2.sh /etc/fstab #指定/etc/fstab这个位置参数

特殊变量

$?:上一个命令的执行状态返回值
$#:参数的个数
$*:参数列表
$@:参数列表 Example1:
#!/bin/bash if [ $# -lt 1 ];then
echo Please Input Parameters
elif [ -e $1 ];then
echo "$1 exist"
else
echo "$1 not exist"
fi
如果参数个数小于1,打印一句话后退出脚本;如果参数个数不小于1,第一个判断条件不满足,判断第二个条件,文件是否存在,存在打印一句后退出;上面两个条件都不满足执行最后一个语句 Example2:
#!/bin/bash if [ $# -lt 2 ];then
echo "Not enough parameters"
exit 6
fi echo "The sum is: $[$1+$2]"
echo "The product is: $[$1*$2]"
当参数个数小于2,打印一句话退出整个脚本,返回一个状态码为6;当不满足判断条件,则打印两个参数的和是多少,乘积是多少

位置参数之shift

shift用于位置参数之后,如有参数$1、$2、$3;在$1之后使用shift,则使用完$1这个位置参数之后,踢掉$1参数,$2变为$1,$3变为$2;shift后面可以跟数字,可以踢掉多个参数
如:shift NUMBER

字符串测试

==(=):测试两边字符串是否相等,相等为真,不等为假;==(=)两端要有空格,否则系统会认为是变量赋值
!=:测试两边字符串是否不等,不等为真,相等为假
>:测试大于
<:测试小于
-n string:测试指定字符串是否为不空,不空则真,空则假 [ -n "$X" ]
-z string:测试指定字符串是否为空,空则真,不空则假 Example:
#!/bin/bash if ! id $1 &>/dev/null;then
echo no such user
exit 10
fi if [ `id -n -u $1` == `id -n -g $1` ];then #id -n -u user,只显示user用户的用户名,不显示uid;-n需要配合-u、-g、-G使用
echo "same"
else
echo "different"
fi
先判断用户是否存在,如果不存在,则打印一句话后退出脚本,如果用户存在,继续往下判断;判断==两边字符串是否相同

shell脚本编程基础之文件测试的更多相关文章

  1. SHELL脚本编程基础知识

    SHELL脚本编程基础知识 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Linux之父Linus有一句话很经典:"Talk is cheap, show me the ...

  2. shell脚本编程基础介绍

    Linux系统——shell脚本编程基础介绍 1.什么是shell 它是一个命令解释器,在linux/unix操作系统的最外层,负责直接与用户对话,把用户的输入解释给操作系统,并处理各种操作输出的结果 ...

  3. linux基础—课堂随笔_03 SHELL脚本编程基础

    shell脚本编程基础 条件选择:if语句 选择执行: 注意:if语句可嵌套 单分支 if(开头)判断条件:then条件为真的分支代码 fi(结尾) 双分支 if(开头)判断条件:then条件为真的分 ...

  4. Linux shell脚本编程基础之练习篇

    shell脚本编程基础之练习篇. 1.编写一个脚本使我们在写一个脚本时自动生成”#!/bin/bash”这一行和注释信息. #!/bin/bash ] then echo "请输入一个参数& ...

  5. Linux Shell脚本编程-基础1

    概述:  shell脚本在Linux系统管理员的运维工作中非常重要.shell脚本能够帮助我们很方便的管理服务器,因为我们可以指定一个任务计划,定时的去执行某一个脚本以满足我们的需求.本篇将从编程基础 ...

  6. shell脚本编程基础

       最近学习了shell脚本编程,感觉自己的脚本写的不太好,所以想把shell脚本相关的知识系统的整理一下,便于以后的学习和使用. 一.shell脚本基础    shell脚本是利用shell的功能 ...

  7. 《Linux命令行与shell脚本编程大全 第3版》Shell脚本编程基础---57

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:

  8. Linux基础篇–shell脚本编程基础

    本章内容概要  编程基础  脚本基本格式  变量  运算  条件测试  配置用户环境 7.1 编程基础程序:指令+数据程序编程风格:   过程式:以指令为中心,数据服务于指令   对象式:以数据为中心 ...

  9. Shell 脚本编程基础

    通过本文记录学习Linux Shell的一些笔记思考和总结,以加强记忆和理解.主要学习参考资料有: 1.<鸟哥的Linux私房菜-基础篇>第四版 2.菜鸟教程——Linux教程 3.ear ...

随机推荐

  1. RAC环境备份,RMAN异机在单实例环境恢复redo问题

    目的:客户环境11.2.0.4 ,多节点RAC环境,现在使用带库的备份,在单机环境测试备份有效性 1.normal参数文件 删除集群相关参数cluster 2.mount 使用备份的控制文件进行还原 ...

  2. 和我一起,重零开始学习Ant Design Pro开发解决方案(一)安装开发环境

    安装NODEJS 什么是NODEJS? 百度一下吧,这个真不知道,老码农,别笑话我: 简单的说 Node.js 就是运行在服务端的 JavaScript.Node.js 是一个基于Chrome Jav ...

  3. 8 search中的timeout参数

    默认的search,是没有时间限制的.比如,一个search,可能要10分钟才能搜完,那么,es就会等10分钟,直到结果出来.   然而,在某些场景下,客户是等不了10分钟的.比如,电商网站,客户宁可 ...

  4. Python_爬虫小实例

    爬虫小实例 一.问题描述与分析 Q:查询某一只股票,在百度搜索页面的结果的个数以及搜索结果的变化. 分析: 搜索结果个数如下图: 搜索结果的变化:通过观察可以看到,每个一段时间搜索结果的个数是有所变化 ...

  5. Hook executed successfully but returned HTTP 403

    jenkins配置gitlab的webhook,完成配置,测试结果显示 Hook executed successfully but returned HTTP 403 解决: 进入jenkins: ...

  6. 【转载】C#中List集合使用RemoveRange方法移除指定索引开始的一段元素

    在C#的List集合操作中,移除集合中的元素可以使用Remove方法和RemoveAt方法,这两个方法都是进行单个List集合元素的移除,其实List集合中还有个RemoveRange方法来移除一整段 ...

  7. docker-compose的一些服务一直是restarting

    1.查看日志 docker logs jenkins(镜像名字) 1.1 可能权限问题 1.2可能内存问题

  8. 爬虫之PyQuery的base了解

    爬虫之PyQuery的base了解 pyquery库是jQuery的Python实现,能够以jQuery的语法来操作解析 HTML 文档,易用性和解析速度都很好,和它差不多的还有BeautifulSo ...

  9. 浅谈 form 表单提交

    原创文章,转载请注明出处:http://www.cnblogs.com/weix-l/p/7675230.html 若有错误,请评论指出,谢谢! Form 对象代表一个 HTML 表单.在 HTML ...

  10. 关于MySql升级JDBC架包导致时区问题报错(The server time zone value '?й???????' is unrecognized or represents more than one time zone)

    报错信息: The server time zone value '?й???????' is unrecognized or represents more than one time zone. ...