一、第一个shell脚本
1、什么是shell
Shell 是操作系统的最外层,Shell 可以合并编程语言以控制进程和文件,以及启动和控制其它程序。shell 通过提示输入,向操作系统解释该输入,然后处理来自操作系统的任何结果输出来管理您与操作系统之间的交互。简单来说Shell 就是一个用户跟操作系统之间的一个命令解释器。
Shell 是用户与 Linux 操作系统之间沟通的桥梁。用户可以输入命令执行,又可以利用 Shell 脚本编程去运行。
2、shell的种类
Linux Shell 种类非常多,常见的有:
Bourne Shell(/usr/bin/sh或/bin/sh)
Bourne Again Shell(/bin/bash)
C Shell(/usr/bin/csh)
K Shell(/usr/bin/ksh)
Shell for Root(/sbin/sh)等。
不同的 Shell 语言的语法有所不同,所以不能交换使用
最常用的shell是 Bash,也就是 Bourne Again Shell,由于易用和免费,Bash 在日常工作中被广泛使用,也是大多数 Linux 系统默认的 Shell。
接下来我们来写一个简单的 shell 脚本。(shell 脚本一般文件名以.sh 结尾,同时文件第一行定义该脚本为 shell 脚本)
3、第一个shell脚本
执行:vi first_shell.sh
输入: #!/bin/bash #This is my First shell echo "Hello world"
保存退出,shell脚本写入完成
输入命令执行:
编辑模式输入:
然后执行:
解释:
#! /bin/bash 表示定义该脚本是一个 shell 脚本(固定格式)。 #This is my First shell 这里的#号属于注解,没有任何的意义,shell 不会解析它。 echo "Hello world" shell 脚本主命令,我们执行这个脚 本讲看到: Hello World 信息。 脚本编写完毕,如何来执行呢,首先执行 shell 脚本需要执行权限,赋予执行权限:chmod o+x first_shell.sh 然后执行:./first_shell.sh 也可以直接使用bash环境命令执行: /bin/sh first_shell.sh,显示效果一样。
二、shell编程之变量
1、定义
Shell 编程语言是非类型的解释型语言,不像 C++/JAVA 语言编程时需要事先声明变量,shell 给一个变量赋值,实际上就是定义了变量,在Linux支持的所有shell中,都可以用赋值符号(=)为变量赋值。SHELL 变量可分为两类:局部变量和环境变量。局部变量只在创建它们的 shell 脚本中使用。而环境变量则可以在创建它们的 shell及其派生出来的任意子进程中使用。有些变量是用户创建的,其他的则是专用 shell 变量。
例如在脚本里面定义 A=123 ,定义这样一个变量,前面变量名,后面是变量的值。
2、例子
引用变量可以使用$A,把变量放在脚本里面会出现什么样的效果呢? 如下
#!/bin/bash #by authors zgs 2020 name=zgs echo "My name is $name" 执行脚本:sh var.sh,结果将会显示:My name is zgs
简单的理解变量,相当于定义一个别名-名称,引用的时候加上$符号就可以了。
shell 常见的系统变量解析:
$0 :当前程序的名称 $n :当前程序的第 n 个参数,n=1,2,…9 $* :当前程序的所有参数(不包括程序本身) $# :当前程序的参数个数(不包括程序本身) $? :上个命令是否执行成功,0 表示执行成功。不是0表示执行失败 $UID :当前用户的 ID $PWD :当前所在的目录
例如:
三、if语句
1、判断数字大小
if (表达式) ;then 语句 1 else 语句 2 fi
如:
2、判断目录是否存在
#! /bin/bash #auto if test #by authors zgs 2020 DIR=/tmp/20200604 if [ ! -d $DIR ];then mkdir -p $DIR echo -e "