Linux——Shell编程入门

Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用户Shell来启动、挂起、停止、甚至编写一个程序。

编写第一个Shell脚本

在这里插入图片描述
在这里插入图片描述

运行Shell脚本

1.将Shell脚本作为程序运行
在这里插入图片描述
2.将Shell脚本作为参数传递给Bash解释器(通过这种方式运行脚本,不需要在脚本文件的第一行指定解释器信息)
在这里插入图片描述
3.通过source命令执行脚本文件(linux下的source命令
在这里插入图片描述

变量定义
  • Shell定义变量:
     	变量名=值(=两边不能有空格)
     	值 不包含任何空白符(例如空格、Tab 缩进等),那么可以不使用引号
     	值 包含了空白符,那么就必须使用引号包围起来
    
  • 变量定义规则
        变量名由数字、字母、下划线组成
        必须以字母或者下划线开头
        不能使用 Shell 里的关键字,并且一般为大写
    

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

设置环境变量

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在另外一个shell程序中使用TOMCAT_HOME
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

位置参数变量

运行 Shell 脚本文件时我们可以给它传递一些参数,就可以使用位置参数变量。例如:./myshell.sh 100 200这个执行shell的命令行,可以将命令行参数传递到myshell脚本内。

变量含义
$nn为数字,$0代表当前脚本的文件名,$1- 9 代 表 第 一 个 到 第 九 个 参 数 , 大 于 9 个 以 上 的 参 数 需 要 使 用 大 括 号 。 例 如 : 9代表第一个到第九个参数,大于9个以上的参数需要使用大括号。例如: 99使{10}
$*代表命令行中所有的参数,并把所有参数看成一个整体
$@代表命令行中所有的参数,但是把每个参数区分对待
$#代表命令行中所有参数的个数

在这里插入图片描述

预定义变量

shell设计者事先已经定义好的变量,可以直接在shell脚本中使用。

变量含义
$$当前进程的进程号(PID)
$!后台运行的最后一个进程的进程号(PID)
$?最后一次执行命令的返回状态,如果这个变量的值为0,则说明上一个命令执行正确,否则,上一个命令执行不正确

在这里插入图片描述

注释
  •  # 单行注释
    
  • :<<!  
             多行注释
    !
    
运算符
  • 语法:
     	1. "$((运算式))" 或 "$[运算式]"     
     	2.  expr 变量 运算符 变量(注意 expr运算符两边要留空格 且 乘号需要转义  即 \*)
    

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

运算符
关系运算符(关系运算符只支持数字)
运算符说明举例
-eq(equal)检测两个数是否相等[ $a -eq $b]
-ne(not equal)不等于(检测两个数是否不相等)[ $a -ne $b ]
-gt( greater than )大于(检测左边的数是否大于右边的)[ $a -gt $b ]
-lt(less-than)小于(检测左边的数是否小于右边的)[ $a -lt $b ]
-ge(great than or equal )大于等于(检测左边的数是否大于等于右边的)[ $a -ge $b ]
-le(less than or equal)小于等于(检测左边的数是否小于等于右边的)[ $a -le $b ]
布尔运算符
运算符说明举例
!非运算[ ! false ]
-o或运算[ $a -lt 20 -o $b -gt 100 ]
-a与运算[ $a -lt 20 -a $b -gt 100 ]
逻辑运算符
运算符说明举例
&&逻辑的 AND[[ $a -lt 100 && $b -gt 100 ]]
||逻辑的 OR[[ $a -lt 100
字符串运算符
运算符说明举例
=检测两个字符串是否相等[ $a = $b ]
!=检测两个字符串是否不相等[ $a != $b ]
-z检测字符串长度是否为0[ -z $a ]
-n检测字符串长度是否不为0[ -n “$a” ]
$检测字符串是否为空[ $a ]
文件测试运算符
运算符说明举例
-b file检测文件是否是块设备文件[ -b $file ]
-c file检测文件是否是字符设备文件[ -c $file ]
-d file检测文件是否是目录[ -d $file ]
-f file检测文件是否是普通文件(既不是目录,也不是设备文件)[ -f $file ]
-g file检测文件是否设置了 SGID 位[ -g $file ]
-k file检测文件是否设置了粘着位(Sticky Bit)[ -k $file ]
-p file检测文件是否是有名管道[ -p $file ]
-u file检测文件是否设置了 SUID 位[ -u $file ]
-r file检测文件是否可读。 [ -r $file ]
-w file检测文件是否可写[ -w $file ]
-x file检测文件是否可执行[ -x $file ]
-s file检测文件是否为空(文件大小是否大于0)[ -s $file ]
-e file检测文件(包括目录)是否存在[ -e $file ]
流程控制
  •     if [ 条件判断式 ]
        then
    		程序
    	elif [ 条件判断式 ]
    	then
    		程序
    	else
    		程序
    	fi
    	注意:[ 条件判断式 ]的中括号和条件判断式之间必须有空格
    

在这里插入图片描述
在这里插入图片描述

  • case $变量名 in
    "值1")
    			如果变量的值等于值1,则执行程序1
    ;;
    "值2")
    			如果变量的值等于值2,则执行程序2
    ;;
    ... 省略其他分支 ...
    *)
    			如果变量的值都不是以上的值,则执行此程序
    ;;
    esac
    

在这里插入图片描述
在这里插入图片描述

  • for 变量 in 值1 值2 值3...
    do
    		程序
    done
    ------------------------------------------------------------------------------------------------------------
    for ((初始值; 循环控制条件; 变量变化))
    do
    		程序
    done
    

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • while [ 条件判断式 ]
    do
    		程序
    done
    

在这里插入图片描述
在这里插入图片描述

函数
  • [ function ] function [()]
    {
    		Aciotn;
    		[return int;]
    }
    可以带function funname() 定义,也可以直接funname() 定义,不带任何参数。
    

在这里插入图片描述
在这里插入图片描述

  • read读取控制台输入
     	read(选项)(参数)
     		选项:
     			-p:指定读取值时的提示符
     			-t: 指定读取值时候等待的时间(秒),如果没有在指定的时间内输入,就不再等待了
     		参数:
     			变量;指定读取值的变量名
    
    在这里插入图片描述
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值