在数字化转型中,选择合适的跨平台开发框架不仅能提高效率,还有助于确保数据安全与合规性。
639
2022-11-16
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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~