前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >shell 脚本笔记(入门到进阶)

shell 脚本笔记(入门到进阶)

作者头像
一写代码就开心
发布2022-05-23 10:07:32
7620
发布2022-05-23 10:07:32
举报
文章被收录于专栏:java和python

目录

1 shell概念

编写shell程序的两个地方 1 解释器的交互环境:

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

1.1 .sh文件

linux中“.sh”文件是脚本文件,一般都是bash脚本,我们可以使用sh命令运行“sh xxx.sh”,并且由于在linux中sh是链接到bash上的,所以sh与bash在功能上是没有区别的。

2 shell 命令

2.1 echo 相当于输出print

就是相当于python的print

2.2 chsh 就是查看解析器

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

2.3 sh和bash 命令

就是执行.sh脚本的命令

2.4 unset 删除变量

代码语言:javascript
复制
unset   jj

2.5 top

查看进程使用的内存

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

3 运行shell脚本的4种方式

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

4 linux权限之可操作性权限x

Linux系统中,对于文件目录和文件权限都有rwx即读、写、操作权限,其中r为read,读权限,w为write,写权限,好理解。那么x 的execute操作权限该如何理解呢?

这里需要区分文件、目录和可执行脚本三类来查看:文件目录的x为进入目录的权限;普通文件的x权限无太大意义;可执行shell脚本的x权限为脚本可执行权限。

5 Shell(Bash)用户自定义变量使用方法详解

每一个bash里面,都是一个进程,各个进程之间互不干扰,意思是如果你在一个bash里面,设置了一个变量,在其他的bash里面是获取不到的

如何打开一个新的bash,直接使用命令

代码语言:javascript
复制
bash
在这里插入图片描述
在这里插入图片描述

之后查看bash的进程

代码语言:javascript
复制
ps -ef|grep bash

可以看到有很多的bash进程

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

如何自定义变量

变量的定义就是这么简单,但是如果不遵守变量定义规则,就会报错。比如:

代码语言:javascript
复制
[root@localhost ~]# 2name="C biancheng"
-bash: 2name=shen chao: command not found
#变量名不能以数字开头
[root@localhost ~]# name = "C biancheng"
-bash: name: command not found
#左右两侧不能有空格
[root@localhost ~]# name=C baincheng
-bash: chao: command not found
#变量的值如果有空格,必须用引号包含

变量调用

代码语言:javascript
复制
当我们需要提取变量中的内容时,需要在变量名之前加入"$"符号。
也就是说,我们需要调用变量时,需要在变量名之前加入"$"符号
。那么最简单的变量调用就是通过 echo 命令输出变量的值。命令如下:
代码语言:javascript
复制
[root@localhost ~]# name="C biancheng"
#定义变量name
[root@localhost ~]# echo $name
C biancheng
#输出变量name的值

6 脚本代码规范

注释

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

6.1 调试,查看结果是哪个代码执行的

代码语言:javascript
复制
bash -x ff.sh
在这里插入图片描述
在这里插入图片描述

将注释也展示

代码语言:javascript
复制
bash -vx ff.sh
在这里插入图片描述
在这里插入图片描述

7 变量

如何自定义变量

变量的定义就是这么简单,但是如果不遵守变量定义规则,就会报错。比如:

代码语言:javascript
复制
[root@localhost ~]# 2name="C biancheng"
-bash: 2name=shen chao: command not found
#变量名不能以数字开头
[root@localhost ~]# name = "C biancheng"
-bash: name: command not found
#左右两侧不能有空格
[root@localhost ~]# name=C baincheng
-bash: chao: command not found
#变量的值如果有空格,必须用引号包含

变量调用

代码语言:javascript
复制
当我们需要提取变量中的内容时,需要在变量名之前加入"$"符号。
也就是说,我们需要调用变量时,需要在变量名之前加入"$"符号
。那么最简单的变量调用就是通过 echo 命令输出变量的值。命令如下:
代码语言:javascript
复制
[root@localhost ~]# name="C biancheng"
#定义变量name
[root@localhost ~]# echo $name
C biancheng
#输出变量name的值

我们在获取的值后面加单位,写法是

代码语言:javascript
复制
echo ${jj}yuan
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

就是输出的语句中,有变量

使用printf 命令

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

8 常量

代码语言:javascript
复制
readonly   y=oo
在这里插入图片描述
在这里插入图片描述

9 基本数据类型(变量值的类型)

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

10 数组类型

10.1 普通数组

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
[root@192 dev]# clear
[root@192 dev]# hobby=("抽烟" "喝酒")
[root@192 dev]# echo ${hobby[0]}

先定义一个数组,之后赋值

代码语言:javascript
复制
[root@192 dev]# declare -a arr
[root@192 dev]# arr[0]=44
[root@192 dev]# 

10.2 关联数组(相当于key value)

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
[root@192 dev]# declare -A info1=(["name"]="小红" ["age"]=15)
[root@192 dev]# echo ${info1["name"]}
小红
[root@192 dev]# 

11变量值操作

11.1获取变量的长度

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
echo ${#y}

或者使用

代码语言:javascript
复制
[root@192 dev]# expr length $y
4
[root@192 dev]# 
在这里插入图片描述
在这里插入图片描述

11.2截取字符串

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
${y:0:2}   从0开始,一共2个字符



[root@192 dev]# expr length $y
4
[root@192 dev]# echo ${y:0:1}
8
[root@192 dev]# echo ${y:0:2}
88
[root@192 dev]# 

11.3 切断

就是对于一个字符串,将那部分切掉,留下剩余 的 #在变量后面,是切断字符串的前面的部分 %在变量的后面,是切断字符串的后面的部分

代码语言:javascript
复制
[root@192 dev]# echo ${url}
www.com
[root@192 dev]# echo ${url#ww}
w.com
[root@192 dev]# echo ${url#*.}
com
[root@192 dev]# echo ${url##*.}
com
[root@192 dev]# echo ${url%ww}
www.com
[root@192 dev]# echo ${url%com}
www.
[root@192 dev]# 

11.4 替换内容

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
[root@192 dev]# echo ${url/www/eee}
eee.com
[root@192 dev]# 

11.5 循环

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
[root@192 dev]# for x in 33 44 55;do echo ${x}; done
33
44
55
[root@192 dev]# 

11.6 let命令

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
[root@192 dev]# age=18
[root@192 dev]# echo $age + 1
18 + 1
[root@192 dev]# expr $age + 1
19
[root@192 dev]# let age++
[root@192 dev]# echo $age
19
[root@192 dev]# 
在这里插入图片描述
在这里插入图片描述

12 算数运算符

整数运算

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

小数运算

代码语言:javascript
复制
yum install bc -y
在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
scale 保留的小数个数

[root@192 dev]# echo "scale=8;3.333+4.44" | bc
7.773
[root@192 dev]# 

13 测试运算符

13.1 判断路径是否存在

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
echo $?  这个命令判断上一个命令是真是假

[root@192 jing]# clear
[root@192 jing]# test -d dd
[root@192 jing]# echo $?
1
[root@192 jing]# 

13.2 判断文件里面长度是否大于0

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

13.3 判断是不是标准文件

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
[root@192 jing]# [ -f a.txt ];echo $?
0
[root@192 jing]# 

13.4 判断当前用户对文件有没有rwx权限

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
[root@192 jing]# [ -r a.txt ];echo $?
0
[root@192 jing]# [ -w a.txt ];echo $?
0
[root@192 jing]# [ -x a.txt ];echo $?
1
[root@192 jing]# 

13.5 赋值

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

14 命令后台运行

直接在命令后面加 &

代码语言:javascript
复制
[root@192 jing]# ping -c10 www.baidu.con &>/bin/null &
[1] 6478
[root@192 jing]# ps -ef|grep 6478
root       6480   5422  0 05:31 pts/0    00:00:00 grep --color=auto 6478
[1]+  退出 2                ping -c10 www.baidu.con &> /bin/null

我们自己写的脚本,想要异步运行,就可以在脚本里面的命令里面后面写&

15 if 判断

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

16 case

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

17 while 循环

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

18 for循环

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

19 函数

在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
  • 1 shell概念
    • 1.1 .sh文件
    • 2 shell 命令
      • 2.1 echo 相当于输出print
        • 2.2 chsh 就是查看解析器
          • 2.3 sh和bash 命令
            • 2.4 unset 删除变量
              • 2.5 top
              • 3 运行shell脚本的4种方式
              • 4 linux权限之可操作性权限x
              • 5 Shell(Bash)用户自定义变量使用方法详解
              • 6 脚本代码规范
                • 6.1 调试,查看结果是哪个代码执行的
                • 7 变量
                • 8 常量
                • 9 基本数据类型(变量值的类型)
                • 10 数组类型
                  • 10.1 普通数组
                    • 10.2 关联数组(相当于key value)
                    • 11变量值操作
                      • 11.1获取变量的长度
                        • 11.2截取字符串
                          • 11.3 切断
                            • 11.4 替换内容
                              • 11.5 循环
                                • 11.6 let命令
                                • 12 算数运算符
                                • 13 测试运算符
                                  • 13.1 判断路径是否存在
                                    • 13.2 判断文件里面长度是否大于0
                                      • 13.3 判断是不是标准文件
                                        • 13.4 判断当前用户对文件有没有rwx权限
                                          • 13.5 赋值
                                          • 14 命令后台运行
                                          • 15 if 判断
                                          • 16 case
                                          • 17 while 循环
                                          • 18 for循环
                                          • 19 函数
                                          领券
                                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档