解释器

解释器是一种命令解释器,主要作用是对命令进行运行和解释,将需要执行的操作传递给操作系统内核并执行

#!/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入门及实践的更多相关文章

  1. Django入门项目实践(上)

    项目结构 1.建立项目 File -->> New Project... 第一个Location是项目所在的目录,第二个Location是项目独立的Python运行环境,我们称之为Virt ...

  2. 初探Electron,从入门到实践

    本文由葡萄城技术团队于博客园原创并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者.   在开始之前,我想您一定会有这样的困惑:标题里的Electron ...

  3. 《SaltStack技术入门与实践》—— 实践案例 <中小型Web架构>3 Memcached配置管理

    实践案例 <中小型Web架构>3 Memcached配置管理 本章节参考<SaltStack技术入门与实践>,感谢该书作者: 刘继伟.沈灿.赵舜东 Memcached介绍 Me ...

  4. Powershell免杀从入门到实践

    转载https://www.jianshu.com/p/fb078a99e0d8 前言 文章首发于Freebuf 在之前发布的一篇 渗透技巧之Powershell实战思路 中,学习了powershel ...

  5. 《Python编程:从入门到实践》第十八章笔记:Django最基本用法笔记

    最近在看Python编程:从入门到实践,这是这本书"项目3 Web应用程序"第18章的笔记.记录了django最基本的一些日常用法,以便自己查阅. 可能是我的这本书版本比较老,书上 ...

  6. Linux shell入门基础(六)

    六.Shell脚本编程详解 将上述五部分的内容,串联起来,增加对Shell的了解 01.shell脚本 shell: # #perl #python #php #jsp 不同的脚本执行不同的文本,执行 ...

  7. Linux shell入门基础(一)

    Linux shell入门基础(一): 01.增加删除用户: #useradd byf   userdel byf(主目录未删除)  userdel -r byf   该用户的属性:usermod 用 ...

  8. 《Github入门与实践》读书笔记 蟲咋先生的追求之旅(上)

    <Github入门与实践>作者: [日] 大塚弘记 译者:支鹏浩/刘斌   简介 本书从Git的基本知识和操作方法入手,详细介绍了GitHub的各种功能,GitHub与其他工具或服务的协作 ...

  9. Python编程从入门到实践笔记——异常和存储数据

    Python编程从入门到实践笔记——异常和存储数据 #coding=gbk #Python编程从入门到实践笔记——异常和存储数据 #10.3异常 #Python使用被称为异常的特殊对象来管理程序执行期 ...

随机推荐

  1. iOS----------YYModel

    weaterInfoModel *weather = [weaterInfoModel yy_modelWithDictionary:returnData[@"weatherinfo&quo ...

  2. (简单)华为荣耀9i LLD-AL20的Usb调试模式在哪里开启的方法

    每当我们使用pc通过数据线连接上安卓手机的时候,如果手机没有开启Usb开发者调试模式,pc则没法成功检测到我们的手机,有时,我们使用的一些功能较好的应用如以前我们使用的一个应用引号精灵,老版本就需要开 ...

  3. wap2app(五)-- 微信授权登录以及踩过的坑

    应用场景是:用Hbuilder打包app,在app中点击微信授权登录或者某一操作,调起微信授权登录,用户授权后拿到用户信息. 一.登录插件配置 先配置微信登录参数 appid和appsecret,在m ...

  4. 在phpstudy中安装并使用ThinkPHP 5

        最近在慕课网学习 thinkphp,由于教师使用的是 MAC下的 MAMP 环境,而我使用的是 win7 的 phpstudy,区别不大,记录在这里,方便查询.   不同系统集成环境安装: m ...

  5. C# Debug和release判断用法

    C# Debug和release判断用法 #if (!DEBUG) Response.Write("DEBUG下运行");#else Response.Write("re ...

  6. Keepalived脑裂

    问题描述:开启防火墙后,Keepalived出现脑裂. 背景架构:两台centos7通过Keepalived实现高可用 问题具体表现形式:两台主机通过ip addr (ip  a)查看,发现两台主机都 ...

  7. C#中FormsAuthentication用法实例

    ....本文纯属抄袭....   using System; using System.Web; using System.Web.Security;   namespace AuthTest {   ...

  8. python + PyQt5 实现 简易计算器

    忽然想起之前一直想写个简单的计算器,今天就写了一下,界面有些简陋,但是基本功能实现没有问题 以下是源码: # --*-- coding:utf-8 --*-- import sys from PyQt ...

  9. DP思想笔记

    一.思想 DP也是把复杂的问题分解为许多子问题,与分治法不同的是,分治法的各个子问题互相之间没有联系,而动态规划却有.前一个子问题的结果与下一步的子问题的结果是什么有关系.这就决定了DP算法肯定有一个 ...

  10. MPLAB X IDE调试仿真功能简单入门

    仿真分为硬件仿真和软件仿真,这里的硬件仿真和软件仿真的区别,就不多说了,相信大家都听说过这两个概念. 我这里想给大家介绍的是“Set PC at Cursor”--“设置PC到光标处”这个功能,这个功 ...