shell脚本笔记

网友投稿 579 2022-11-16

shell脚本笔记

shell脚本笔记

注释内容: 单行注释:

除了首行的#不是注释外,其他所有行内容,只要首个字符是#,那么就表示该行是注释

多行注释:     多行注释有两种方法::<

#!/bin/bash 指定bash的解释器echo '1'<

shell执行的方式:

bash 脚本名 source 脚本名 shell脚本内容环境和当前用户环境一致

总结:source或者.点号执行方式不会开启子进程,能共享当前终端定义的变量,其他执行方式会开启子进程

变量定义 ​

变量名=变量值

shell 中的变量分为三大类 ​

本地变量、全局变量、shell内置变量

本地变量

变量名=变量值 / 变量名=‘变量值’ / 变量名=“变量值” / 这个可以在变量值中添加变量 data=n a=“123 $data 321” --> 123 n 321

命令变量

全局变量

expote 变量 或者 export 变量名=值 通过 env 命令参看所有全局变量

总结:在终端中定义全局变量时,只对当前shell环境及子shell环境有效,对新开的终端无效,当前终端关闭后,它定义的全局变量消失。

取消变量:

unset 变量名

shell内置变量

$0 获取当前执行的shell脚本文件名$$ 获取执行shell脚本的进程号$n 获取当前执行的shell脚本的第n个参数值,n=1..9,当n为0时表示脚本的文件名,如果n大于9就要用大括号括起来${10}$# 获取当前shell命令行中参数的总个数$? 获取执行上一个指令的返回值(0为成功,非0为失败)

字符串相关:

${变量名:起始位置:截取长度} 起始位置0

默认值相关:

${变量名:-默认值} ${变量名+默认值}

测试语句两种形式:

test 条件表达式 [ 条件表达式 ] 注: [ ]与内部的条件表达式之间需要有空格

test跟 [ ] 都是用于测试条件表达式是否成立,条件成立,状态返回值是0,条件不成立,状态返回值是1

逻辑表达式 逻辑表达式一般用于判断多个条件之间的依赖关系。 常见的逻辑表达式有:

&& [ 1 = 1 ] && echo “条件成立” 条件成立 || [ 1 = 2 ] || echo “条件不成立” 条件不成立

文件表达式 -f 判断输入内容是否是一个文件 示例

[ -f weizhi.sh ] && echo "是一个文件" 是一个文件 [ -f weizhi.sddh ] || echo "不是一个文件" 不是一个文件

-d 判断输入内容是否是一个目录 示例:

[ -d weizhi.sddh ] || echo "不是一个目录" 不是一个目录 mkdir nihao [ -d nihao ] && echo "是一个目录" 是一个目录

-x 判断输入内容是否可执行 示例:

[ -x age.sh ] || echo "文件没有执行权限" 文件没有执行权限 [ -x test.sh ] && echo "文件有执行权限" 文件有执行权限

数值操作符

n1 -eq n2 相等n1 -gt n2 大于n1 -gte n2 大于n1 -lt n2 小于n1 -lte n2 小于n1 -ne n2 不等于

字符串比较

== 内容一致 != 内容不一致

计算表达式

$(( 计算表达式 ))root@ubuntu:~# n=100root@ubuntu:~# echo $(($n/5))20

let 计算表达式

root@ubuntu:~# i=1root@ubuntu:~# let i=i+7root@ubuntu:~# echo $i8

简单流程控制语句 单分支if语句

if [ 条件 ]then指令fi#例子:#!/bin/bash#单if语句的使用场景if [ "$1" == "nan" ]then echo "您的性别是 男"fi

双分支if语句

if [ 条件 ]then指令1else指令2fi#例子#!/bin/bash#单if语句的使用场景if [ "$1" == "nan" ]then echo "您的性别是 男"else echo "您的性别是 女"fi

多分支if语句

if [ 条件 ]then指令1elif [ 条件2 ]then指令2else指令3fi

case选择语句 和if语句一样 代码看起来更加整洁

case 变量名 in 值1) 指令1 ;; ..... 指n) 指令n ;;esac#例子:#cat case.sh#!/bin/bash#case语句使用场景case "$1" in "start") echo "服务启动中..." ;; "stop") echo "服务关闭中..." ;; "restart") echo "服务重启中..." ;; *) echo "$0 脚本的使用方式: $0 [ start | stop | restart ]" ;; esac

for循环语句

for 值 in列表do 执行语句done#例子:#!/bin/bash#for语句的使用示例for i in $(ls /root)do echo "${i}"done

while循环语句

while 条件do 执行语句done#例子:#!/bin/bash#while的示例a=1while [ "${a}" -lt 5 ]do echo "${a}" a=$((a+1))done

until循环语句

until 条件do 执行语句done#例子:#!/bin/bash#until的示例a=1until [ "${a}" -eq 5 ]do echo "${a}" a=$((a+1))done

函数实践 简单函数定义和调用示例

#!/bin/bash#函数使用场景一:执行频繁的命令dayin(){ echo "wo de mingzi shi 111"}dayin

函数传参和函数体内调用参数示例

#!/bin/bash#定义传参数函数dayin(){ echo "wode mignzi shi $1"}#函数传参dayin $1

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:HTML Marquee 标签实现文字滚动
下一篇:DBUtils.PooledDB 创建数据库连接池
相关文章

 发表评论

暂时没有评论,来抢沙发吧~