侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

shell学习记录

2023-12-05 星期二 / 0 评论 / 0 点赞 / 66 阅读 / 6023 字

1. shell变量 shell变量不需要声明,赋值即可定义变量,变量与等号之前不可以空格。 使用时只要在变量名前加$即可,可选择性的用大括号将变量括起来; 使用 readonly 命令可以将

1. shell变量

  • shell变量不需要声明,赋值即可定义变量,变量与等号之前不可以空格。
  • 使用时只要在变量名前加$即可,可选择性的用大括号将变量括起来;
  • 使用 readonly 命令可以将变量定义为只读变量 ;
  • 使用 unset 命令可以删除变量 ,但不能删除只读变量;
  • 字符串变量可用单引号、双引号括起来,单引号将内容原样输出,双引号可以变量替换和输入转义字符。

2. shell获取参数的特殊符号

$# 	传递到脚本的参数个数$* 	以一个单字符串显示所有向脚本传递的参数。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。$$ 	脚本运行的当前进程ID号$! 	后台运行的最后一个进程的ID号$@ 	与$*相同,但是使用时加引号,并在引号中返回每个参数。如"$@"用「"」括起来的情况、        以"$1" "$2" … "$n" 的形式输出所有参数。$- 	显示Shell使用的当前选项,与set命令功能相同。$? 	显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。

3. shell 运算符

shell支持多种运算符,但不支持简单的算术运算,要借助其它的命令来实现,如expr,要注意几点:

  • 表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2,
  • 完整的表达式要被 ` ` 包含,注意这个字符不是常用的单引号
  • 条件表达式要放在方括号之间,并且要有空格,
  • 乘号(*)前边必须加反斜杠(/)才能实现乘法运算;

关系运算符:( 假设 a=10,b=20 )

运算符 说明 举例
-eq 检测两个数是否相等,相等返回 true [ $a -eq $b ] 返回 false。
-ne 检测两个数是否相等,不相等返回 true。 [ $a -ne $b ] 返回 true。
-gt 大于 [ $a -gt $b ] 返回 false。
-lt 小于 [ $a -lt $b ] 返回 true。
-ge 大于等于 [ $a -ge $b ] 返回 false。
-le 小于等于 [ $a -le $b ] 返回 true。
! 取反 [ ! false ] 返回 true
-o 、|| 或运算 [ $a -lt 20 -o $b -gt 100 ] 返回 true
-a 、&& 与运算

[ $a -lt 20 -a $b -gt 100 ] 返回 false

字符串运算符(假设 a="abc", b ="def")

运算符 说明 举例
是否相等 [ $a = $b ] 返回 false。
!= 是否不相等 [ $a != $b ] 返回 true
-z 字符串长度是否为0 [ -z $a ] 返回 false
-n 字符串长度是否不为0 [ -n $a ] 返回 true
str 字符串是否为空 [ $a ] 返回 true。

文件测试运算符

运算符 说明 举例
-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 文件是否为空 [ -s $file ]
-e file 文件(包括目录)是否存在 [ -e $file ]

4 shell流程控制

条件语句

#if语句if conditionthen    command;fi#if else语句if conditionthen    command;else    commend;fi#if else-if语句if  conditionthen    command;elif conditionthen    commend;else    commend;fi

for 语句

for var in item1 item2 ... itemNdo    command1    command2    ...    commandNdone

while 循环

while conditiondo    commanddone#永真循环while :do    commanddonewhile truedo    commanddone

until

until conditiondo    commanddone

Case

case 值 in模式1)    command1    command2    ...    commandN    ;;模式2)    command1    command2    ...    commandN    ;;esac

注意使用;;结束一个条件的执行,使用 * 捕获没有匹配的情况。

5. shell文件包含

使用.加空格或sources将shell脚本引入。

广告 广告

评论区