鸟哥的Linux私房菜——第十六章:学习Shell Scripts
视频链接:http://www.bilibili.com/video/av10565321/
1. 什么是 Shell Script (shell写的脚本)
1.1 干嘛学习 shell scripts? ()
1.2 第一支 script 的撰写与执行
1.3 撰写 shell script 的良好习惯建立
2. 简单的 shell script 练习: (read -p date)
3. 善用判断式:
3.1 利用 test 指令的测试功能
3.2 利用判断符号 [ ]
3.3 Shell script 的预设变数($0, $1...)
4. 条件判断式:
4.1 利用 if .... then
4.2 利用 case ..... esac 判断
4.3 利用 function 功能
5. 循环 (loop)
5.1 while....do....done, until....do....done
5.2 for...do...done
6. shell script 的追踪与 debug
第一个shell scripts的撰写,我们写入一个test.sh的文档内
#!/bin/bash
PAth=自己echo $PATH一下
ecport PATH
echo -e "Hello shuyunquan \n"
exit
然后这样执行
bash test.sh
接下来来一个进阶的scripts吧,我们加入一个read

test命令 其实就是判断的用途,我列出常用的参数,然后再举个例子




[] 命令,也是判断用的,有趣的是,test命令的参数[]都能用
[]需要注意的几点

我们来练习一道例题
1. 当执行一个程序的时候,这个程序会让使用者选择 Y 或 N ,
2. 如果使用者输入 Y 或 y 时,就显示『 OK, continue 』
3. 如果使用者输入 n 或 N 时,就显示『 Oh, interrupt !』
4. 如果不是 Y/y/N/n 之内的其它字符,就显示『I don't know what is your choise』
#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
export PATH
read -p "请输入(Y/N):" yn
[ "$yn" == "Y" -o "$yn" == "y" ] && echo "ok,continue" && exit
[ "$yn" == "N" -o "$yn" == "n" ] && echo "oh,intsdsd" && exit
echo "我不信这个也能出来" && exit
shell scripts的预设变数($0 $1 $2)
这个理解起来很简单,脚本名称就是$0 然后第一个参数就是$1 第二个参数就是$2 ...以此类推
好,我们来个简单的例子
#!/bin/bash echo "The scripts name is $0"
[ -n "$1" ] && echo "第一个参数是: $1" || exit
[ -n "$2" ] && echo "第二个参数是: $2" || exit
if...then
if [ ] ; then
......
elif [ ] ; then
.......
else
........
fi
exit 0
#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
export PATH
read -p "请输入(Y/N):" yn
if [ "$yn" == "Y" -o "$yn" == "y" ];then
echo "ok,continue"
elif [ "$yn" == "N" -o "$yn" == "n" ];then
echo "oh,intsdsd"
else
echo "我不信这个也能出来"
fi
exit
case ... in ... esac
#!/bin/bash
case $ in
"hello")
echo "hello,how are you"
;;
"")
echo "你必须输入参数"
;;
*)
echo "要输入hello啊"
;;
esac
function 函数
#!/bin/bash function h()
{
echo "蜀云泉好帅啊 $1" //function函数也有变量,$1就是函数的参数,这个和脚本的变量不同
} case $ in
"one")
h
;;
"two")
h
;;
"three")
h
;;
*)
echo "只能用123"
;;
esac
循环loop
while do done 注意,while里面的判断式! 符合while条件的才进去循环
#!/bin/bash
read -p "请输入一个数字:" number
i=
s=
while [ "$i" -lt "$number" ] //这里的小于号是 -lt 注意!
do
i=$(($i+)) //这里为什么要两个()?因为()有运算的意思
s=$(($s+$i)) //这里i和s这两行不能有空格,否则失败
done
echo -e "'1+2+...+$number' 的结果是: $s "
大家可以试试echo (1+2)是不会出来3的,而echo ((1+2))才会出来3,所以()有一个整体运算的意思
untile do done 条件不符合的才进去
for...do...done 下面是第一种用法
#!/bin/bash s=
for((i=;i<=;i++))
do
s=$(($s+$i))
done echo $s
for的第二种用法 animal会循环依次显现三种内容
#!/bin/bash for animal in dog cat elephant
do
echo "这次的动物是 $animal"
done
shell script的追踪与debug
就是你写的脚本有没有问题,bash自带参数就能检查

鸟哥的Linux私房菜——第十六章:学习Shell Scripts的更多相关文章
- 鸟哥的linux私房菜——第十六章学习(程序管理与 SELinux 初探)
第十六章.程序管理与 SE Linux 初探 在 Linux 系统当中:"触发任何一个事件时,系统都会将他定义成为一个程序,并且给予这个程序一个 ID ,称为 PID,同时依据启发这个程序的 ...
- 鸟哥的linux私房菜——第十二章学习(Shell Scripts)
第十二章 Shell Scripts 1.0).什么是shell scripts? script 是"脚本.剧本"的意思.整句话是说, shell script 是针对 shel ...
- 鸟哥的Linux私房菜笔记第六章(二)
文件内容查询 直接查询文件内容 查阅一个文件的内容可以使用指令cat/tac/nl. # [cat|tac|nl] 文件 区别: 1.cat是直接把文件内容输出到屏幕上,并且从第一行开始输出到末行 2 ...
- 鸟哥的Linux私房菜——第十九章:例行命令的建立
视频链接:http://www.bilibili.com/video/av11008859/ 1. 什么是例行性命令 (分为两种,一种是周期性的,一种是突发性的)1.1 Linux 工作排程的种类: ...
- 鸟哥的Linux私房菜——第十四章:Bash Shell
视频链接:http://www.bilibili.com/video/av10094012/ 本章目录: 1. Bash shell1.1 什么是 shell ? (我们通过shell与Kernel核 ...
- 鸟哥的Linux私房菜——第十二章:档案的压缩与打包
视频链接: 土豆:http://www.tudou.com/programs/view/GncwT0FJKsQ B站(推荐):http://www.bilibili.com/video/av98857 ...
- 鸟哥的Linux私房菜——第十五章:正规表示法
视频链接 B站:http://www.bilibili.com/video/av10364761/ 目录如下 1. 前言:2. 基础正规表示法:2.1 以 grep 撷取字符串 (grep -iv ...
- 鸟哥的Linux私房菜笔记第六章(一)
目录与路径 相对路径与绝对路径 上一章简单的提到绝对路径和相对路径 绝对路径:路径的写法一定是由根目录(/)写起的,例如:/home/user 这个目录 相对路径:路径的写法不是由根目录(/)写起,例 ...
- 鸟哥的Linux私房菜笔记第四章
前言 对着<鸟哥的Linux私房菜-基础版>做了简化笔记.不想让自己知其然而不知其所然.所以写个博客让自己好好巩固一下,当然不可能把书中的内容全部写下来.在这里就简化一点把命令写下来. 让 ...
随机推荐
- UI自动化环境准备
1.安装专业版pycharm,只要是填写了licensed的都是专业版本的pycharm 2.python中安装好selenium包 pip install selenium 3.python中安装 ...
- Centos7下vim的table键修改为4个空格
1.要有root用户权限 2.已经安装vim 3.编辑/etc/vim/vimrc 文件,添加set ts=4 vim /etc/vimrc #按大写G到最后一行,添加set ts= set ts = ...
- mysql 配置 root 远程访问
来源: https://www.cnblogs.com/24la/p/mariadb-remoting-access.html 首先配置允许访问的用户,采用授权的方式给用户权限 GRANT ALL P ...
- idea 迁移maven项目出现导入仓库半天没反应的问题解决
可以先参考: https://www.cnblogs.com/kinome/p/10289212.html 然后再看看maven配置文件是否正确,项目进行迁移时,如果环境不同,比如一个是使用的自定义m ...
- JavaWeb项目学习教程(1) 准备阶段
写在最前面 为什么要写一个这样的教程?作为一个软件工程专业的学生,上课老师讲得飞快,几乎都是在课后自己消化,我知道学习记录的重要性.我自己本身还有很多很多基础的东西都没有学会,比较博客园的人有很大的差 ...
- ERP条码解决方案,金蝶盘点机条码解决方案,应用PDA的信息化管理能给我们的生产管理带来怎么样的变化的探讨
ERP条码解决方案,金蝶盘点机条码解决方案,应用PDA的信息化管理能给我们的生产管理带来怎么样的变化的探讨. 当前越来越多的大大小小的中国企业已经接受了ERP的思想,大多数的商店,企业,工厂都会上一套 ...
- ping命令使用及其常用参数
PING (Packet Internet Groper),因特网包探索器,用于测试网络连接量检查网络是否连通,可以很好地帮助我们分析和判定网络故障.Ping发送一个ICMP(Internet Con ...
- PAT甲题题解-1016. Phone Bills (25)-模拟、排序
博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/6789229.html特别不喜欢那些随便转载别人的原创文章又不给 ...
- PAT----1001. A+B Format (20)解题过程
1001. A+B Format (20) github链接 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B Calculate a + b and output t ...
- Python的三种格式化输出
今天刚学了python的三种格式化输出,以前没接触过这么有趣的输出方式,现在来分享一下. #!/user/bin/env python#coding:utf-8#三种格式化输出 #第一种格式化输出na ...