一、shell脚本命令
1.shell脚本第一行解释:
#! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell
2.创建一个目录:
mkdir crtest
3.切换到指定目录crtest
3.1vim test01.sh 按回车进入编辑界面
i :在当前位置插入
a:在当前位置后追加
o:在当前位置的后面插入一行
I :在行头插入
A:在行尾追加
O:在当前位置的前面插入一行
‘ESC’键从编辑模式转换到阅读模式
3.2.阅读模式(或叫命令模式)下:
:w 保存文件
:w filename 保存成filename文件
:q 退出
:q! 强行退出
:w! 强行写
:wq 保存退出 (等价输入两个ZZ)
:x 同wq
4.按键盘中的i进入创建模式
第一行指定解释器:
#! /bin/bash #Date : 2022-02-12 #Author : chenran #Vertion : 1.0 echo “hello shell”
输出:hello shell
5.执行脚本
方式一:/bin/bash/test01.sh --不需要授权
方式二:./test01.sh
赋权:chmod 777 test01.sh
6.shell变量
全局变量:永久生效
普通变量:作用于运行期间,退出shell变量失效
a = 20 --内容纯数字不需要加引号
echo ${a}
将命令的结果作为变量的内容赋值:time = $(date)
echo ${time} --等价于:echo $(date)
特殊变量:
$0:获取当前执行shell脚本的文件名,如果执行脚本包含了路径,那就包含路径名
$n:获取当前执行的shell脚本的第n个参数,n=1....9,当n为0时表示脚本的文件名,如果n>9,则用大括号括起来,例如${10}
echo $0
------------------------
echo $1
执行:./test01.sh 输出为:空
执行:./test01.sh start 输出为:start --取第一个参数
$#:获取当前执行的shell脚本后面接的参数的总个数
echo $#
执行:./test01.sh start stop 输出:2
$?:获取执行上一个指令的执行状态返回值(0为成功,非零为失败)
echo $#
echo $?
执行:./test01.sh start stop 输出:2,0
表示执行echo $#成功
二、运算命令
![](https://img2022.cnblogs.com/blog/1774212/202202/1774212-20220219195201895-2141532286.png)
加法:echo $((1+2))
输出:3
除法:echo $((3/2))
输出:1
i=10
echo $((i++))
输出:10
echo $((++i))
输出:11
![](https://img2022.cnblogs.com/blog/1774212/202202/1774212-20220219195315416-820715832.png)
三、条件表达式:
[ 5 -eq 3 ] && echo "true" || echo "false" 输出:false 注:操作符中间严格注意空格 [ "hello" -eq "hello" ] && echo "true" || echo "false" 输出:true [ -n "hello" ] && echo "true" || echo "false" 输出:true [ -d /data/crtest/ ] && echo "true" || echo "false" 输出:true [ -f /data/crtest/test01.sh ] && echo "true" || echo "false" 输出:true [ -e /data/crtest/test01.sh ] && echo "true" || echo "false" 输出:true [ -e /data/crtest/test01.sh -a -z "aa" ] && echo "true" || echo "false" 输出:false 分析:/data/crtest/test01.sh文件存在为真,”aa“长度不为0为假,真&&假=》假
四、流程控制结构
![](https://img2022.cnblogs.com/blog/1774212/202202/1774212-20220219195529267-463992450.png)
if [ -e /data/crtest/test01.sh ];then echo "true" fi 输出:true
if [ $1 == "a" ]; then echo "a" elif [ $1 == "b" ]; then echo "b" else echo "c" fi 执行:./test01.sh a 输出:a
![](https://img2022.cnblogs.com/blog/1774212/202202/1774212-20220219195826322-130982178.png)
i=1 while [ ${i} -le 10 ] do echo ${i} ((i++)) done 输出:1~10 案列二:求和 i=1 sum=0 while [ ${i} -le 10 ] do sum=$((sum + i)) ((i++)) done echo ${sum} 输出:55
注:
exp1:对变量进行初始化
exp2:条件表达式
exp3:变量更改条件表达式
方式一: for i in 1 2 3 4 5 6 7 8 9 10 do echo ${i} done 输出:1~10 方式二: for ((i=1; i<=10; i++)) do echo ${i} done 输出:1~10