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选项就可以做到,下面让我们来看一下. 下面的这段脚本,先是输出一个问候 ...
随机推荐
- dedecms后台添加新变量和删除变量的方法
下面由做网站为大家来介绍dedecms后台添加新变量和删除变量的方法 添加新变量是做什么用的?答:可以在模板内调用的东东. 一.进入网站织梦(Dedecms)后台(以dede5.5为例),依次打开系统 ...
- Python之道1-环境搭建与pycharm的配置django安装及MySQL数据库配置
近期做那个python的开发,今天就来简单的写一下开发路线的安装及配置, 开发路线 Python3.6.1+Pycharm5.0.6+Django1.11+MySQL5.7.18 1-安装Python ...
- html5-表格的建立
用表格显示信息调理清楚,使浏览者一目了然.表格在网页中还有协助布局的作用,可以把文字.图像等组织到表格的不同行列.那么,接下来我将讲解一下表格的常用属性. 首先,表格命令 表格的行:tr 每行中的列 ...
- Java基础——继承
学习Java继承之前,我们想回忆一下Java面向对象需要特别注意的几个关键点. 面向对象是将复杂的事情简单化了,它通过封装的方式使得代码的重用性更高和安全性更强.平时我们要学会用面向对象的方式去思考, ...
- GIS与水文分析(1)GIS与水文学
GIS与水文分析(1)GIS与水文学 对于大部分GIS从业人员或者利用GIS作为研究方向的人员来说,水文学过于专业,更偏重于理论化,很难从GIS的角度来模拟和分析水文的过程.这其实是个普遍性的问题,任 ...
- 解决ionic在Android和iOS的一些样式上的冲突
//设置默认返回按钮的文字 $ionicConfigProvider.backButton.previousTitleText(false).text('返回'); // 设置全局 $http 超时 ...
- 自定义分布式RESTful API鉴权机制
微软利用OAuth2为RESTful API提供了完整的鉴权机制,但是可能微软保姆做的太完整了,在这个机制中指定了数据持久化的方法是用EF,而且对于用户.权限等已经进行了封装,对于系统中已经有了自己的 ...
- redhat 6.8 配置centos6的yum源
1. 检查是否安装yum包[root@node1 rpms]# rpm -qa|grep yum 2. 删除自带的yum包[root@node1 rpms]# rpm -qa|grep yum|xar ...
- python多线程几种方法实现
python多线程编程 Python多线程编程中常用方法: 1.join()方法:如果一个线程或者在函数执行的过程中调用另一个线程,并且希望待其完成操作后才能执行,那么在调用线程的时就可以使用被调线程 ...
- HTML5 中的拖放
今天,给大家整理一个html5 拖放. 首先,我们先了解一下什么是拖放? 拖放(Drag 和 drop)是 HTML5 标准的组成部分. 拖放是一种常见的特性,即抓取对象以后拖到另一个位置. 在 HT ...