shell入门及实践
解释器
解释器是一种命令解释器,主要作用是对命令进行运行和解释,将需要执行的操作传递给操作系统内核并执行
#!/bin/bash(默认),指定解释器
#!/bin/bash
#这是第一个shell脚本
#by uncleyong
echo ‘hello, shell'
变量
shell的变量不需要先声明,可以直接使用,eg:a=15
调用变量:
$a 或者 ${a}
建议用后者,这样可以和其它字符串拼接
$?, 判断上一条命令是否成功,0表示成功,其它表示不成功$0,返回脚本的文件名称$1-$9,返回对应的参数值$*,返回所有的参数值是什么$#,返回参数的个数和
#!/bin/bash
#by uncleyongecho "脚本名称:$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入门及实践相关推荐
- python如何导入txt数据集-终于找到python入门到实践数据集
Python是一款功能强大的脚本语言,具有丰富和强大的库,重要的是,它还具有很强的可读性,易用易学,非常适合编程初学者入门.以下是小编为你整理的python入门到实践数据集 环境配置:下载Python ...
- python网络爬虫教程-终于明了python网络爬虫从入门到实践
Python是一款功能强大的脚本语言,具有丰富和强大的库,重要的是,它还具有很强的可读性,易用易学,非常适合编程初学者入门.以下是小编为你整理的python网络爬虫从入门到实践 环境配置:下载Pyth ...
- flink入门_阿里巴巴为何选择Flink?20年大佬分11章讲解Flink从入门到实践!
前言 Apache Flink 是德国柏林工业大学的几个博士生和研究生从学校开始做起来的项目,之前叫做 Stratosphere.他们在2014 年开源了这个项目,起名为 Flink. Apache ...
- java 8入门与实践_30个Java入门技巧和最佳实践
java 8入门与实践 Java是最流行的编程语言之一-无论是Win应用程序,Web应用程序,移动,网络,消费电子产品,机顶盒设备,Java随处可见. 在Java上运行的设备超过30亿. 据Oracl ...
- Git 入门最佳实践
Git 入门最佳实践 前言 Git简介 实用主义 深入探索 总结 参考资料 前言 Git 是程序员学习和工作都离不开发工具,今天和大家分享 Git 常用命令总结. Git简介 Git 是一种分布式版本 ...
- python从入门到实践19章答案
目录 前言 一.博客 1.建立项目 2.创建应用程序 3.Django管理网站 4.让用户输入数据 二.博客账户 1.应用程序users 2.登录页面 3.注销 4.注册页面 三.重构 四.保护页面n ...
- python从入门到实践18章答案
目录 前言 一.新项目 二.简短的条目 三.Django API 四.比萨店 1.创建虚拟环境.安装Django.创建项目.创建数据库.创建应用程序 2.定义模型 3.激活模型 4.向管理网站注册模型 ...
- python编程从入门到实践 第18章Django入门 2022年最新
说明:这篇文章只是记录自己自学本书的一个痕迹,日后来看作为一个念想.至于做为公开,是希望对一些同样跟我一样的朋友有一点点帮助,当然我本人就是小白,帮助可能也不大哈哈. 这篇文章记录了<pytho ...
- 初探Electron,从入门到实践
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 在开始之前,我想您一定会有这样的困惑:标题里的Electron 是什么?Electron能做什么?许多伟大的 ...
- 远控免杀从入门到实践(6)-代码篇-Powershell
郑重声明:文中所涉及的技术.思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途以及盈利等目的,否则后果自行承担! <远控免杀从入门到实践>系列文章目录: 1.远控免杀从 ...
最新文章
- 简单介绍python3判断IP地址的方法
- 那个脑袋生锈的我写的东西
- Spring AOP,AspectJ,CGLIB 有点晕
- 漫游飞行_手机“飞行模式”为何没被淘汰?内行人坦言:其实是你不会用!
- chrome用type=file获取图片路径并转base64字符串
- 吴恩达机器学习:逻辑回归
- mysql高可用性方案(2)
- Android 属性动画(一)
- 类加载的过程(加载、验证、准备、解析、初始化)
- mysql 一对多查询组成单表字段_单表多字段MySQL模糊查询的实现
- 白事碰上红事,徐渭应景吟诗
- mentohust配置
- 人人都知“双十一”,几人仍记“光棍节”
- triggered传递参数
- SAP CO TCode
- 设计模式回顾——模板模式(C++)
- 若x,y均定义为int型,z定义为double型,以下不合法的scanf函数调用语句是: A)scanf(“ %d%lx,%le“,x,y,z); B)scanf(“%2d * %d%lf“,
- Elastic 7.11 重磅发布:可搜索快照和新冷层的正式版以及读时模式的公测版
- 微信小程序|icon列表跳转不同界面
- Dubbo远程传输协议详解
热门文章
- 技术leader新官上任会遇到那些事儿
- 最近使用腾讯企业邮箱发送邮件的一些问题
- mysql连接查询课堂设计_【MySQL数据库设计与应用(三)】数据查询(一)简单查询,条件查询,连接查询...
- 神不知鬼不觉,阿里程序员把地球多出的1秒“变没”了
- kotlin有一个简单而一致的类型系统 elvis运算符
- java ldap ou_java – 从用户的多个OU递归地查询LDAP角色
- javaweb基于JSP+Servlet+bootstrap开发简单的日记本系统 毕业设计 课程设计 大作业源码
- 【MySQL学习笔记】第7章 复制、删除表和记录
- 江西理工大学matlab考试,江西理工大学matlab测试编程题汇总.pdf
- 34. IO流--写出数据