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选项就可以做到,下面让我们来看一下. 下面的这段脚本,先是输出一个问候 ...
随机推荐
- 使用SQL语句使数据从坚向排列转化成横向排列(排班表)
知识重点: 1.extract(day from schedule01::timestamp)=13 Extract 属于 SQL 的 DML(即数据库管理语言)函数,同样,InterBase 也支持 ...
- python基础操作_方法(函数)
#函数,方法#普通方法def hello(): print('hello')hello()#带形参的方法def hello1(name): print('hello%s'%name)hello1('布 ...
- Android 图片加载框架Glide4.0源码完全解析(一)
写在之前 上一篇博文写的是Picasso基本使用和源码完全解析,Picasso的源码阅读起来还是很顺畅的,然后就想到Glide框架,网上大家也都推荐使用这个框架用来加载图片,正好我目前的写作目标也是分 ...
- 【论文:麦克风阵列增强】An alternative approach to linearly constrained adaptive beamforming
作者:桂. 时间:2017-06-03 21:46:59 链接:http://www.cnblogs.com/xingshansi/p/6937259.html 原文下载:http://pan.ba ...
- Java程序设计环境概述
本文主要Java程序设计环境的要点,以及相关注意事项. 一.安装Java开发包 Oracle公司为Linux.Mac OS X.Solaris和Windows提供了Java开发工具包(JDK)的最新. ...
- 映射语句之INSERT语句
1.一个 INSERT SQL 语句可以在<insert>元素在映射器 XML 配置文件中配置 例子: <insert id="insertStudentWithId&qu ...
- jquery让页面滚动到底部
function scrollToEnd(){//滚动到底部 var h = $(document).height()-$(window).height(); $(document).scrollTo ...
- StructureMap经典的IoC/DI容器
StructureMap是一款很老的IoC/DI容器,从2004年.NET 1.1支持至今. 一个使用例子 //创建业务接口 public interface IDispatchService { } ...
- Linux常用操作命令(三)
查看linux日志某几行 用逆序显示命令tail查看 命令格式:tail [ -r ] [ -n Number ] [ File ] [一]从第3000行开始,显示1000行.即显示3000~39 ...
- 【Android Developers Training】 35. 序言:分享文件
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...