Shell入门及实践
解释器
解释器是一种命令解释器,主要作用是对命令进行运行和解释,将需要执行的操作传递给操作系统内核并执行
#!/bin/bash(默认),指定解释器
- #!/bin/bash
- #这是第一个shell脚本
- #by uncleyong
- echo ‘hello, shell'
变量
shell的变量不需要先声明,可以直接使用,eg:a=15
调用变量的话 $a 或者 ${a},建议用后者,这样可以和其它字符串拼接
$?, 判断上一条命令是否成功,0表示成功,其它表示不成功
$0,返回脚本的文件名称
$1-$9,返回对应的参数值
$*,返回所有的参数值是什么
$#,返回参数的个数和
- #!/bin/bash
- #by uncleyong
- echo "脚本名称:$0"
- echo "第一个参数是:$1"
- echo "第二个参数是:$2"
- echo "一共有多少参数:$#"
- echo "这些参数是:$*"
常用符号
> ,会覆盖原有的内容
>> ,不会覆盖原有的内容
; ,分号,执行多条命令,cat 1.txt; ls
| ,管道符,ps –ef | grep xxx
&& ,前面的命令执行成功,后面的才可以执行
|| ,前面的命令执行失败,后面的才可以执行
“” ,双引号中的变量输出变量值
‘’ ,单引号中的变量输出本身
`` ,输出命令结果 eg:a=`date`;echo $a
整数运算符
加
expr 1 + 2
echo $[1 + 2]
echo $((1 + 2))
注意: expr加号两边要有空格,a=1;b=2;expr $a + $b; echo $[a+b]; echo $((a+b))
减
乘
除
余
小数
bc计算器
保留多少位小数可以通过scale,echo "scale=2;3/2" | bc
条件判断
文件目录
语法:[ 判断表达式 ],注意,[]内部左右要有空格
-e 目标是否存在
[ -e test.sh ] || touch test.sh
-d 是否为路径
[ -d /root/test ] && echo "/root/test存在"
-f 是否为文件
[ -f test.sh ] && echo "是文件"
权限
-r 是否有读取权限
-w 是否有写入权限
-x 是否有执行权限
[ -x test.txt ] && echo '有执行权限'
字符串
[ `echo '1.2 < 2.1' | bc` -eq 1 ] && echo '小于'
if
- #!/bin/bash
- if [ $1 -eq $2 ]
- then
- echo "$1 等于 $2"
- else
- echo "$1 不等于 $2"
- fi
键盘输入分数,显示成绩等级
[ -z STRING ] “STRING” 的长度为零则为真。
2> /dev/null;then,下面判断报错的时候输出到无底洞
- #!/bin/bash
- read -p "请输入你的分数:" score
- if [ -z $score ];then
- echo "你还没有输入分数"
- exit
- fi
- if [ $score -ge 0 ] 2> /dev/null && [ $score -lt 60 ];then
- echo "差"
- elif [ $score -lt 80 ] 2> /dev/null;then
- echo "中"
- elif [ $score -lt 90 ] 2> /dev/null;then
- echo "良"
- elif [ $score -lt 101 ] 2> /dev/null;then
- echo "优"
- else
- echo "分数值为0~100之间"
- fi
case
- case 变量 in
- 值1 )
- 执行动作1
- ;;
- 值2 )
- 执行动作2
- ;;
- ....
- esac
输入性别,输出对应的结果
- #!/bin/bash
- echo '请输入性别:'
- read sex
- case $sex in
- '男')
- echo '帅哥'
- ;;
- '女')
- echo '美女'
- ;;
- * )
- echo '输入有误请重新输入'
- ;;
- esac
键盘输入分数,显示成绩等级
- #!/bin/bash
- case $1 in
- [0-9]|[0-5][0-9]) echo "差" ;;
- [6-7][0-9]) echo "中" ;;
- [8][0-9]) echo "良" ;;
- [9][0-9]) echo "优" ;;
- 100) echo "优,太棒了,满分" ;;
- *) echo "输入不符合规则,分数值为0~100之间" ;;
- esac
for
- #!/bin/bash
- #打印1-10这10个数字之和
- sum=0
- for ((i=1;i<11;i++))
- do
- sum=$(($sum + $i))
- done
- echo $sum
while
- #!/bin/bash
- #打印1-10这10个数字之和
- sum=0
- n=1
- while [ $n -lt 11 ];do
- sum=$(( $sum + $n ))
- n=$(( $n + 1 ))
- done
- echo $sum
输入输出
read -参数
-p:给出提示符,不支持"\n"换行
-s:隐藏输入的内容
-t:给出等待的时间,超时会退出read
- #!/bin/bash
- read -p "请输入密码:" pass
- echo '你输入的密码是:'$pass
字体特效
字体色30-37:
echo -e "\033[31m 红色字 \033[0m”
背景色40-47:
echo -e "\033[47;34m 白底蓝字 \033[0m"
特效
echo -e "\033[1m 高亮度 \033[0m"
echo -e "\033[4m 下划线 \033[0m"
echo -e "\033[5m 闪烁 \033[0m"
- #!/bin/bash
- read -p "`echo -e "\033[31;1;4;5m 请输入您的密码: \033[0m"`" pass
- echo '你输入的密码是:'$pass
综合应用
见jenkins中编写的shell脚本。 详见自动化持续集成。
Shell入门及实践的更多相关文章
- Django入门项目实践(上)
项目结构 1.建立项目 File -->> New Project... 第一个Location是项目所在的目录,第二个Location是项目独立的Python运行环境,我们称之为Virt ...
- 初探Electron,从入门到实践
本文由葡萄城技术团队于博客园原创并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 在开始之前,我想您一定会有这样的困惑:标题里的Electron ...
- 《SaltStack技术入门与实践》—— 实践案例 <中小型Web架构>3 Memcached配置管理
实践案例 <中小型Web架构>3 Memcached配置管理 本章节参考<SaltStack技术入门与实践>,感谢该书作者: 刘继伟.沈灿.赵舜东 Memcached介绍 Me ...
- Powershell免杀从入门到实践
转载https://www.jianshu.com/p/fb078a99e0d8 前言 文章首发于Freebuf 在之前发布的一篇 渗透技巧之Powershell实战思路 中,学习了powershel ...
- 《Python编程:从入门到实践》第十八章笔记:Django最基本用法笔记
最近在看Python编程:从入门到实践,这是这本书"项目3 Web应用程序"第18章的笔记.记录了django最基本的一些日常用法,以便自己查阅. 可能是我的这本书版本比较老,书上 ...
- Linux shell入门基础(六)
六.Shell脚本编程详解 将上述五部分的内容,串联起来,增加对Shell的了解 01.shell脚本 shell: # #perl #python #php #jsp 不同的脚本执行不同的文本,执行 ...
- Linux shell入门基础(一)
Linux shell入门基础(一): 01.增加删除用户: #useradd byf userdel byf(主目录未删除) userdel -r byf 该用户的属性:usermod 用 ...
- 《Github入门与实践》读书笔记 蟲咋先生的追求之旅(上)
<Github入门与实践>作者: [日] 大塚弘记 译者:支鹏浩/刘斌 简介 本书从Git的基本知识和操作方法入手,详细介绍了GitHub的各种功能,GitHub与其他工具或服务的协作 ...
- Python编程从入门到实践笔记——异常和存储数据
Python编程从入门到实践笔记——异常和存储数据 #coding=gbk #Python编程从入门到实践笔记——异常和存储数据 #10.3异常 #Python使用被称为异常的特殊对象来管理程序执行期 ...
随机推荐
- 利用efi功能更改bios主板被隐藏的设置(如超频)
整理自(来源): http://tieba.baidu.com/p/4934345324 ([新手教程]利用EFI启动盘修改 隐藏bios设置) http://tieba.baidu.com/p/49 ...
- 当我们按下电源键,Android 究竟做了些什么?
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由goo发表于云+社区专栏 相信我们对Android系统都不陌生,而Android系统博大精深,被各种各样的智能设备承载的同时,我们会否 ...
- Windows系统下搭建Git本地代码库
近由于工作需要,要把工作代码做一下版本管理.工作代码也不方便放到github上,也不想付费建私密库,公司也没几个人,所以就想着搭建一个本地Git版本库,来做版本管理.搭建过程如下. 系统环境:Dell ...
- 通过apt-get安装JDK8
安装python-software-properties $sudo apt-get install python-software-properties $sudo apt-get install ...
- c/c++ 继承与多态 静态调用与动态调用
静态调用,与动态调用. 动态调用条件:必须用父类的引用或者指针,并且调用的必须是虚方法. #include <iostream> class Base{ public: virtual i ...
- Windows Server 2012 R2 配置FTP服务器
Windows Server 2012 R2 安装IIS参考上一篇配置IIS 8.0:https://www.cnblogs.com/aq-ry/p/9329310.html 搭建完IIS 后,最近又 ...
- DecimalFormat格式化十进制数字
DecimalFormat 是 NumberFormat 的一个具体子类,用于格式化十进制数字.该类设计有各种功能,使其能够分析和格式化任意语言环境中的数,包括对西方语言.阿拉伯语和印度语数字的支持. ...
- .NET CORE学习笔记系列(3)——ASP.NET CORE多环境标识
在开发项目的过程当中,生产环境与调试环境的配置是不一样的.比如连接字符串. ASP .NET CORE 支持利用环境变量来动态配置 JSON 文件.ASP.NET Core 引用了一个特定的环境变量 ...
- DEV SIT UAT PET SIM PRD PROD常见环境英文缩写含义
英文缩写 英文 中文 DEV development 开发 SIT System Integrate Test 系统整合测试(内测) UAT User Acceptance Test 用户验收测试 P ...
- 【js】this问题
var obj = { a: 10, b: () => { console.log(this.a); // undefined console.log(this); // Window {pos ...