shell 基础入门----持续更新

shell 基础入门

shell 解释器哪儿?

etc/shells 目录下
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tSSbslVP-1613747940588)(evernotecid://158BEA21-A231-40BB-A8C0-CD424F2FFE96/appyinxiangcom/23662897/ENResource/p180)]

脚本格式

脚本以 #!/bin/bash 开头(指定解析器)
在这里插入图片描述

脚本的执行方法

第一种执行方法:
bash 绝对路径/相对路径
sh 绝对路径/相对路径
第二种执行方法:
绝对路径/相对路径
在这里插入图片描述

如果执行不通过可以使用 chmod 命令执行

两者的区别:
前者本质是 bash 解释器帮你执行脚本,所以脚本不需要执行权限。后者是脚本需要自己执行,所以需要执行权限

chmod 的用法

https://blog.csdn.net/lyy14011305/article/details/76333041

shell脚本之多命令处理

脚本内容:在 ./Library/study/shell/texts/basic_1/ 下创建一个 banzhang.txt,在 banzhang.txt 文件中增加“I love you”

#!/bin/bash

cd ./Library/study/shell/texts/basic_1/
touch banzhang.txt
echo "I love you" >>banzhang.txt
变量
常用系统变量(区分大小写)
  1. $HOME 获取家目录的至
  2. $PWD 当前目录的值
  3. $SHELL 默认解析器
    1. $USER 当前命令
自定义变量
  1. 声明变量+赋值
    直接赋值即可(等号左右两边不能有空格)
    在这里插入图片描述

  2. 撤销变量
    upset <变量名>
    在这里插入图片描述

  3. 声明静态变量
    readonly <变量名>
    注意:不能用unset,该变量是只读变量,只能将虚拟机重启才能删除
    在这里插入图片描述

  4. export(将变量提升至全局变量)
    export <变量名>
    eg. 前提是helloworld.sh 中已经传进去一个变量值
    在这里插入图片描述

变量的声明规范
  1. 变量名称可由字母、数字和下划线组成,不能以数字开头。(环境变量名建议大写)
  2. 等号两侧不能有空格
  3. 在bash中,变量默认是字符串类型,无法直接进行数值运算
  4. 变量的值如果有空格,需要使用双引号或单引号括起来
    在这里插入图片描述
系统特殊变量
$n
  1. $n,n 为数字,$0 代表该脚本名称,$1-$9 代表第一到第九个参数,十以上的参数需要用打括号
    在这里插入图片描述
$#
  1. 获取所有输入参数的个数,常用于循环
    在这里插入图片描述
$*
  1. 这个变量代表命令行中所有的参数,$* 把所有参数看成一个整体
$@
  1. 这个变量代表命令行中所有的参数,$@ 会把每一个参数区别对待
    在这里插入图片描述
$?
  1. 判断上一条命令是否正确执行:
    变量值为0,正确执行
    变量值非0(具体数值由命令自己决定),执行不正确
    在这里插入图片描述
运算符
基本语法
  1. ( ( 运 算 式 ) ) ” 或 " ((运算式))” 或 " (())"[运算式]"

  2. ![](https://img-blog.csdnimg.cn/20210219232457629.png

  3. expr +,-,*,/,% 加,减,乘,除,取余
    注意:expr 运算符间要有空格

  4. 实战
    (1)计算 3+2 的值
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gx1BQFtt-1613747940605)(evernotecid://158BEA21-A231-40BB-A8C0-CD424F2FFE96/appyinxiangcom/23662897/ENResource/p192)]

(2)计算 3-2 的值
在这里插入图片描述

(3)计算 3乘2 的值
在这里插入图片描述

(4) 计算(3+2)* 4 的值
a. 采用 expr 的方式
在这里插入图片描述

ymtdeMBP-4:basic_1 ymt$ expr `expr 3 + 2` \* 4
20

b. 采用 $[运算式] 的方式
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Bvz7VM0m-1613747940609)(evernotecid://158BEA21-A231-40BB-A8C0-CD424F2FFE96/appyinxiangcom/23662897/ENResource/p196)]

条件判断
1. 基本语法

[ condition ] (注意:condition 前后都要有空格)
条件非空即为 true,[ atguigu ] 返回true,[] 返回false

2. 常用判断条件

(1)= 字符串比较

符号判断
-lt小于(less than)
-le小于等于(less equal)
-eq等于(equal)
-gt大于(greater than)
-ge大于等于(greater equal)
-ne不等于(Not equal)

(2)按照文本权限进行判断

符号判断
-r有读的权限(read)
-w有写的权限(write)
-x有执行的权限(execute)

(3) 按照文件类型进行判断

符号判断
-f文件存在并且是一个常规的文件(file)
-e文件存在(existence)
-d文件存在并且是一个目录(directory)
3. 实战

(1)23是否大于22
在这里插入图片描述

(2)判断 helloworld.sh 是否具有写权限
在这里插入图片描述

(3)判断目录或者文件是否存在
在这里插入图片描述

4. 多条件判断
  • && 于
  • || 或
流程控制
if 判断
  1. 基本语法
if [ 条件判断式 ]; then
    程序
    
fi

或者

if [ 条件判断式 ]
    then
        程序
fi

注意事项:
(1)[ 条件判断式 ],中括号和条件判断式之间必须要有空格
(2)if 后要有空格

  1. 实战
    (1)输入一个数字,如果是1,则输出 banzhangzhenshuai ,如果是2,则输出 hahaha, 如果是其他则什么都不输。
    在这里插入图片描述
case语句
  1. 基本语法
case $变量名 in
"值1")
    如果变量的值等于值1,执行程序1
;;
"值2")
    如果变量的值等于值2,执行程序2
;;
...........可无限加case........
*)
    如果变量的值都不是以上的值,则执行此程序
;;
esac

注意:
(1)case行尾必须是单词“in”,每一个模式匹配必须以右括号")“结束。
(2)双分号”;;" 表示命令序列的结束,相当于 java 中的 break
(3)最后的 “*)” 表示默认模式,相当于 java 中的 default

  1. 实操
    (1)输入一个数字,如果是1,则输出banzhang,如果是2,则输出xuewei,如果是其他则输出tongxue
    在这里插入图片描述
for 循环
  1. 语法1:
    for((初始者))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值