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选项就可以做到,下面让我们来看一下. 下面的这段脚本,先是输出一个问候 ...
随机推荐
- badboy录制兼容性有趣测试
badboy录制默认是启动IE浏览器,使用badboy录制脚本时,遇到测试系统对IE浏览器不兼容时,就需要考虑换浏览器,修改为其他浏览器(如firefox.chrome)录制,只需要设置该浏览器为默认 ...
- javascript学习笔记(一):词法结构
一:字符集 javascript程序是用Unicode字符集编写的. 二:区分大小写 javascript是区分大小写的语言,但需注意的是HTML不区分大小写 三:空格.换行符和格式控制符 javas ...
- Docker Hub工作流程-Docker for Web Developers(6)
在Github上创建项目仓库 和创建其他Github项目一样,在Github创建一个仓库,然后在仓库里面增加一个dockerfile,然后提交并推送到Github上. 我已经创建的仓库地址:https ...
- 开发抓包工具 Mac charles 3.11.5 破解版 安装包
摘要 在发开过程中,追踪请求和监控请求与返回数据是我们经常会需要的一个需求,在Mac端,Charles是一款非常易用的抓包工具. 一.简介 Charles是Mac端的一款截取与分析网络请求的工具,在网 ...
- Kubernetes部分Volume类型介绍及yaml示例
1.EmptyDir(本地数据卷) EmptyDir类型的volume创建于pod被调度到某个宿主机上的时候,而同一个pod内的容器都能读写EmptyDir中的同一个文件.一旦这个pod离开了这个宿主 ...
- 【WPF】DispatcherFrame 是个啥玩意儿
对于 WPF 的线程模型,Dispatcher 对象相信各位大伙伴已经不陌生,尤其是跨线程更新UI的时候,都会用它来调度消息.与 Dispatcher 对象有关的,还有一个叫 DispatcherFr ...
- 亲测可行,AndroidStudio 究竟如何配置gradle
一.你不想看到的 Gradle Build Running 话说在天朝当程序员也是很不容易的,不管是查阅资料还是下载东西,很多时候你会发现自己上网姿势不对,当然对大多数程序员来说,这都不是事儿.这次重 ...
- MySQL各模块工作配合
MySQL各模块工作配合 在了解了 MySQL 的各个模块之后,我们再看看 MySQL 各个模块间是如何相互协同工作的 .接下来,我们通过启动 MySQL,客户端连接,请求 query,得到返回结果, ...
- JAVA上传与下载
java下载指定地址的文件 package com.test; import java.io.FileNotFoundException; import java.io.FileOutputStrea ...
- 简单RPC框架-业务线程池
*:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...