bash脚本的特性01
1.bash特性之多命令执行
cmdcmd1 `cmd2` #引用cmd1 | cmd2 | cmd3 | ... #管道
与:true && true = truetrue && false = false第一个操作数为true,其结果将取决于第二个操作数;false && true = falsefalse && false = false第一个操作数为False,其结果至此可断定,为false;或:true || true = truetrue || false = true第一个操作数为true,其结果至此可断定,为true;false || true = truefalse || false = false第一个操作数为false,其结果将取决于第二个操作数;非:! true = false! false = true
#!/bin/bash! id $name && useradd $name && echo "the $name has been add"||echo "the user $name has exist"

2.bash的配置文件
3.bash脚本编程之算术运算
#!/bin.bashn1=$(id -u root)n2=$(id -u daemon)n3=$(id -u shutdown)let sum=$n1+$n2+$n3echo $sum
num1=$(wc -l /etc/fstab|grep -o '^[0-9]*\>')num2=$(wc -l /etc/grub2.cfg|grep -o '^[0-9]*\>')num3=$(wc -l /etc/issue|grep -o '^[0-9]*\>')let num0=$num1+$num2+$num3echo $num0#或者num1=$(cat /etc/fstab | wc -l)
num1=$(grep '^$' /etc/fstab|wc -l)num2=$(grep '^$' /etc/grub2.cfg|wc -l)num3=$(grep '^$' /etc/issue|wc -l)let num0=$num1+$num2+$num3echo $num0
4.bash脚本编程格式
第一行,顶格:#!/bin/bash注释信息:#代码注释:缩进,适度添加空白行;
数据类型:字符型、数值型
5.bash脚本编程之算术运算
let VAR=expressionVAR=$[expression]VAR=$((expression))VAR=$(expr argu1 argu2 argu3)注意:有些时候乘法符号需要转义;
增强型赋值:变量做某种算术运算后回存至此变量中
+=,-=,*=, /=, %=自增:VAR=$[$VAR+1]let VAR+=1let VAR++自减:VAR=$[$VAR-1]let VAR-=1let VAR--
例1:写一个脚本
#!/bin/bashn1=$(head - /etc/passwd | tail - | cut -d ":" -f3)n2=$(head - /etc/passwd | tail - | cut -d ":" -f3)let sum=$n1+$n2echo "The sum is $sum."
5.bash脚本编程之条件测试
1.执行命令,并利用命令状态返回值来判断0:成功1-255:失败2.测试表达式test expression[ expression ][[ expression ]]注意:expression两端必须有空白字符,否则为语法错误
bash的条件测试:
5.1 数值测试
-eq:是否等于,[ $num1 -eq $num2 ]-ne:是否不等于-gt:是否大于-ge:是否大于等于-lt:是否小于-le:是否小于等于
5.2 字符串测试
==:是否等于>:是否大于<:是否小于!=:是否不等于=~:左侧字符串是否能够被右侧的pattern所匹配-z "string":判断指定的字串是否为空;空则为真,不空则假;-n "string":判断指定的字符串是否不空;不空则真,空则为假;注意:(1) 字符串要加引用;(2) 要使用[[ ]];
5.3 文件测试
5.3.1 存在性测试
5.3.2 存在型及类型测试
5.3.3 文件权限测试
5.3.4 其他
5.3.5 双目测试
5.3.4 组合测试条件
command1 && command2command1 || command2!command例:[ -O file ] && [ -r file ]
第二种方式
expression1 -a expression2expression1 -o expression2!expression例:[ -O file -a -x file]
#!/bin/bash- name=$(hostname)
#注意:上面的括号必须有[ -z "$name" -o "$name" == "localhost.localdomain" -o "$name" == "localhost" ] && hostname www.mageedu.com || echo "the hostname is `hostname`"#先判断主机名是否为空或者为localhost.localdomain或localhost,如果为真,就设置为www.mageedu.com,后面的表达式不执行;如果为假,则第二个表达式不执行,执行第三个表达式,显示现在的主机名
6.脚本的状态返回值
7.向脚本传递参数
7.1 位置参数变量
引用方式:$1,$2,...${10},${11},..轮替:shift [n]:位置参数轮替
练习:写一个脚本,通过命令传递两个文本文件路径给脚本,计算其空白行数之和
#!/bin/bash- #linenum.sh
- n1=$(grep "^$" $1 | wc -l)
n2=$(grep "^$" $2 | wc -l)let sum=$n1+$n2echo "Total blank lines is $sum."#测试/bin/bash linenum.sh -x /etc/fstab /etc/virc
7.2 特殊变量
#!/bin/bashnum1=$(cat /etc/passwd|wc -l)num2=$(cat /etc/shadow|wc -l)let sum=$num1+$num2echo $sumpwdecho "the 0 is $0"echo "the 1 is $1"echo "the * is $*"echo "the @ is $@"

8.bash脚本编程之用户交互:
#!/bin/bash#echo -e "please enter your test:"read TESTREADecho $TESTREAD#下面是测试结果:[root@zhangpf test]# /bin/bash -x ceshi.sh+ echo -e 'please enter your test:'please enter your test:+ read TESTREADabc+ echo abcabc
#!/bin/bash#- read -p "please enter a username: " name
[ -z "$name" ] && echo "a username is needed." && exitread -p "please enter a passwd for $name ,[passwd]: " password[ -z "$password" ] && password="password"if id $name &>/dev/null;thenecho "The user $name exists."echo "The user id is `id -u $name`"elseuseradd $nameecho "$password" | passwd -stdin $name &>/dev/nullecho "The user $name finished."fi
bash脚本的特性01的更多相关文章
- 生产力工具:shell 与 Bash 脚本
生产力工具:shell 与 Bash 脚本 作者:吴甜甜 个人博客网站: wutiantian.github.io 注意:本文只是我个人总结的学习笔记,不适合0基础人士观看. 参考内容: 王顶老师 l ...
- Bash脚本编程学习笔记08:函数
官方资料:Shell Functions (Bash Reference Manual) 简介 正如我们在<Bash脚本编程学习笔记06:条件结构体>中最后所说的,我们应该把一些可能反复执 ...
- Linux 桌面玩家指南:06. 优雅地使用命令行及 Bash 脚本编程语言中的美学与哲学
特别说明:要在我的随笔后写评论的小伙伴们请注意了,我的博客开启了 MathJax 数学公式支持,MathJax 使用$标记数学公式的开始和结束.如果某条评论中出现了两个$,MathJax 会将两个$之 ...
- 使用shc加密bash脚本程序
摘要以前写看到别人写的脚本用shc加密的,我也有就了解了下. SHC代表shell script compiler,即shell脚本编译器.通过SHC编译过的脚本程序对普通用户而言是不读的,因此如果你 ...
- 玩转Bash脚本:循环结构之while循环(转)
转自:http://blog.csdn.net/guodongxiaren/article/details/43341769 总第8篇 本系列(玩转Bash脚本)更多文章,请访问:http://b ...
- 玩转Bash脚本:选择结构之case
总第5篇 之前,我们谈到了if. 这次我们来谈还有一种选择结构--case. case与if if用于选择的条件,不是非常多的情况,假设选择的条件太多.一系列的if.elif,.也是醉了. 没错,ca ...
- Linux--shell的基本特性--01
1.bash的基本特性: a) 命令展开:date命令—— 基于date命令创建命令 查看系统时钟:date 查看硬件时钟: clock .hwclock (常常同步系统时钟与硬件时钟) cal 查看 ...
- Bash脚本编程之脚本基础和bash配置文件
脚本基础 参考资料:Shell Scripts (Bash Reference Manual) 不严谨地说,编程语言根据代码运行的方式,可以分为两种方式: 编译运行:需要先将人类可识别的代码文件编译成 ...
- bash脚本测试总结
bash脚本测试总结 跟踪脚本的执行 可以让bash打印出你脚本执行的过程中的所有语句.这很简单,只需要使用bash的-x选项就可以做到,下面让我们来看一下. 下面的这段脚本,先是输出一个问候 ...
随机推荐
- mysql too many connections 问题
我的处理步骤: 第一步:首次确定你的服务可不可以重启,如果可以重启转第二步,如果不可以重启转第三步,这个主要考虑已经部署到客户现场或者正在使用中的数据库不能重启. 第二步:查找mysql的安装路径,这 ...
- 什么时候该选用Xamarin?
现在开发app也好,桌面程序也好,有很多不同的技术可以选择.那么,什么时候应该选用Xamarin呢? 5 questions to consider before choosing Xamarin 1 ...
- JavaScript中对事件简单的理解(1)
事件(event) 1.什么是JavaScript事件? 事件是文档或浏览器中发生的特定交互瞬间. 2.事件流 事件流描述的是从页面中接受事件的顺序,包含IE提出的事件冒泡流与Netscape提出的事 ...
- 常用数组、字符串方法总结&获取元素、DOM操作
字符串的方法.返回值.是否改变原字符串:1 charAt() 方法可返回指定位置的字符. 不改变原始字符串 JavaScript并没有一种有别于字符串类型的字符数据类型,返回的字符是长度为 1 的字符 ...
- myeclipse导入项目时出现Exploded location overlaps an existing deployment错误解决方法
版权声明:本文为博主原创文章,转载时请注明原文链接. 今天拿别人的项目,在自己的软件上配置,通过tomcat添加项目时出现了 Exploded location overlaps an existin ...
- JS问题笔记——模拟Jq底层实现工厂模式
<script type="text/javascript"> (function (window,undefined){ function _$(arguments) ...
- ajax基础知识、用ajax做登录页面、用ajax验证用户名是否可用、ajax动态调用数据库
1.ajax的基础知识 ajax是结合了jquery.php等几种技术延伸出来的综合运用的技术,不是新的内容.ajax也是写在<script>标签里面的. 如果使用ajax一定是要有1个处 ...
- Python:一篇文章掌握Numpy的基本用法
前言 Numpy是一个开源的Python科学计算库,它是python科学计算库的基础库,许多其他著名的科学计算库如Pandas,Scikit-learn等都要用到Numpy库的一些功能. 本文主要内容 ...
- ClassLoader机制:一个类何时会被虚拟机初始化?
版权声明:本文为博主原创文章,转载请注明出处,欢迎交流学习! 大家都知道Java程序被编译器编译成字节码文件保存在硬盘里,Java虚拟机在执行代码时首先要把编译后的字节码文件从硬盘加载到内存中,然后才 ...
- Java IO学习笔记总结
Java IO学习笔记总结 前言 前面的八篇文章详细的讲述了Java IO的操作方法,文章列表如下 基本的文件操作 字符流和字节流的操作 InputStreamReader和OutputStreamW ...