shell脚本编程基础之文件测试
文件测试判断条件
-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脚本编程基础之文件测试的更多相关文章
- SHELL脚本编程基础知识
SHELL脚本编程基础知识 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Linux之父Linus有一句话很经典:"Talk is cheap, show me the ...
- shell脚本编程基础介绍
Linux系统——shell脚本编程基础介绍 1.什么是shell 它是一个命令解释器,在linux/unix操作系统的最外层,负责直接与用户对话,把用户的输入解释给操作系统,并处理各种操作输出的结果 ...
- linux基础—课堂随笔_03 SHELL脚本编程基础
shell脚本编程基础 条件选择:if语句 选择执行: 注意:if语句可嵌套 单分支 if(开头)判断条件:then条件为真的分支代码 fi(结尾) 双分支 if(开头)判断条件:then条件为真的分 ...
- Linux shell脚本编程基础之练习篇
shell脚本编程基础之练习篇. 1.编写一个脚本使我们在写一个脚本时自动生成”#!/bin/bash”这一行和注释信息. #!/bin/bash ] then echo "请输入一个参数& ...
- Linux Shell脚本编程-基础1
概述: shell脚本在Linux系统管理员的运维工作中非常重要.shell脚本能够帮助我们很方便的管理服务器,因为我们可以指定一个任务计划,定时的去执行某一个脚本以满足我们的需求.本篇将从编程基础 ...
- shell脚本编程基础
最近学习了shell脚本编程,感觉自己的脚本写的不太好,所以想把shell脚本相关的知识系统的整理一下,便于以后的学习和使用. 一.shell脚本基础 shell脚本是利用shell的功能 ...
- 《Linux命令行与shell脚本编程大全 第3版》Shell脚本编程基础---57
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:
- Linux基础篇–shell脚本编程基础
本章内容概要 编程基础 脚本基本格式 变量 运算 条件测试 配置用户环境 7.1 编程基础程序:指令+数据程序编程风格: 过程式:以指令为中心,数据服务于指令 对象式:以数据为中心 ...
- Shell 脚本编程基础
通过本文记录学习Linux Shell的一些笔记思考和总结,以加强记忆和理解.主要学习参考资料有: 1.<鸟哥的Linux私房菜-基础篇>第四版 2.菜鸟教程——Linux教程 3.ear ...
随机推荐
- wpf 对控件进行截图,获取快照
有时候我们项目,在执行某个操作后,会生成一些数据结果,如报表一类的东西,我们需要对结果进行保存,甚至是生成word文档. 那么首先获取到控件快照就最基本的条件. 生成快照的静态方法类 using Sy ...
- 异常【kubelet cgroup driver:cgroupfs跟docker cgroup driver:systemd不一致】
修改docker.service vi /lib/systemd/system/docker.service 找到 --exec-opt native.cgroupdriver=systemd \ 修 ...
- 轻量ORM-SqlRepoEx介绍
轻量级 ORM-SqlRepoEx 介绍 SqlRepoEx是 .Net平台下兼容.NET Standard 2.0人一个轻型的ORM.解决了Lambda转Sql语句这一难题,SqlRepoEx使用的 ...
- SIM7000C TCP
SIM7000C是基于高通MDM9206平台开发LTE CAT M1(eMTC) 和NB-IoT模块,能支持LTETDD/LTE-FDD/GSM/GPRS/EDGE多个频段,上下行数据流量峰值达到37 ...
- Apache Commons FileUpload实现文件上传
一.Apache Commons-FileUpload简介 Apache Commons是一个专注于可重用Java组件的所有方面的 Apache 项目. Apache Commons项目由三个部分组成 ...
- js 数组 数组 最大值、最小值 算法(转载)
一:https://www.cnblogs.com/zhouyangla/p/8482010.html 1.排序法 首先我们给数组进行排序,可以按照从小到大的顺序来排,排序之后的数组中第一个和最后一个 ...
- 微信小程序之生成图片分享 二维码分享 canvas绘制
如果本文对你有用,请爱心点个赞,提高排名,帮助更多的人.谢谢大家!❤ 如果解决不了,可以在文末进群交流. 添加画布 首先,在小程序里进行绘图操作需要用到<canvas>组件,步骤大致分为以 ...
- c# CryptoStream 类
- python之PEP8规范
比较需要注意的 缩进 每一级缩进使用4个空格. 续行应该与其包裹元素对齐,要么使用圆括号.方括号和花括号内的隐式行连接来垂直对齐,要么使用挂行缩进对齐3.当使用挂行缩进时,应该考虑到第一行不应该有参数 ...
- 优化API接口响应速度
前言 API接口响应慢? SLA一直提不上去? 其实这是后端程序员想进阶必须要跨过去的坎:就是把它优化掉. 那么这其中到底有没有套路呢?答案是:有的. 本文将介绍目前正在用并且十分“无脑”有效的这个套 ...