https://www.toutiao.com/article/7187343867296203324/?log_from=34dbeaf45ba45_1678809460566 什么是Shell脚本? (内含可以放大的视频教程) Linux作为比较专业的操作系统,主要用于服务器端项目部署,需要很多命令组合完成一项功能,而这些功能很多都是重复执行的,比如数据库备份、软件环境安装、或者一个管理员要同时操作几百台甚至上千台的服务器,这就需要进行统一配置,同时完成多台服务器统一配置。 shell就是将指令放到一个文件中统一执行,且可以设置执行的逻辑。 学习shell就像是学习了一门编程语言,比如变量、选择结构、循环结构、函数等。 下面我们将如下多条指令用分号";"分隔开,首先强制删除当前目录下AA文件夹,如果不存在就忽略,再创建AA文件夹,在里面创建文件1.txt 2.txt 3.txt,这个过程写在一行执行: rm -rf AA;mkdir AA;cd AA;touch test{1,2,3}.txt 在shell中,将多个指令用';'拼接起来,就是一个指令集合,按照顺序执行。然而,如果命令特别复杂,写在同一行是很不方便的,而且也无法保存命令,所以,我们将指令集合放到一个文件当中保存,统一执行,这就是shell脚本。 这样,我们就可以将工作中重复的流程性操作统一写好脚本,统一执行。 #! /bin/bash rm -rf AA mkdir AA cd AA touch test0{1,2,3}.txt 查看在线用户使用 w 或 who 命令都可以查看服务器上目前已登录的用户信息,两者的区别在于,w 命令除了能知道目前已登陆的用户信息,还可以知道每个用户执行任务的情况。 #! /bin/bash date w who 脚本执行方法: 1.bash 文件名 2.chmod +x 文件名 ,再 ./文件名 执行 echo和变量
#! /bin/bash echo hello cat. echo "hello cat." echo 'hello cat.' name="blackcat" echo "hello $blackcat." echo "hello ${blackcat}." echo 'hello ${blackcat}.' echo $(date +%F) echo `date +%F` 只读变量 #! /bin/bash name="cat" gender="m" readonly name declare -r gender name="blackcat" gender="f" 删除变量 #! /bin/bash name="cat" echo ${name} unset name echo ${name} echo "done!" 变量分类本地变量:当前用户自定义的变量。当前进程中有效,其他进程及当前进程的子进程无效。 环境变量:当前进程有效,并且能够被子进程调用。 查看当前用户的环境变量:env # 将普通变量导出为环境变量 declare -x name # 将环境变量变为普通变量 declare +x name 全局变量全局所有的用户和程序都能调用,且继承,新建的用户也默认能调用。 所有用户的环境变量:/etc/profile 当前用户的环境变量:~/.bashrc 修改后执行:source .bashrc,使环境变量生效。 内置变量
整型变量数组变量数组中可以存放多个值。Bash Shell 只支持一维数组(不支持多维数组),初始化时不需要定义数组大小。 与大部分编程语言类似,数组元素的下标由 0 开始。 Shell 数组用括号来表示,元素用"空格"符号分割开,语法格式如下: array_name=(value1 value2 ... valuen) 普通数组 关联数组 read交互式输入
数学运算1. 使用 $(( )) 2. 使用 $[ ] 3. 使用 expr 外部程式 4. 使用 let 命令 expr表达式说明: 用空格隔开每一项 用反斜杠放在shell特定的字符前面(发现表达式运行错误时,可以试试转义) 对包含空格和其他特殊字符的字符串要用引号括起来 expr会在stdout中输出结果。如果为逻辑关系表达式,则结果为真,stdout为1,否则为0。 expr的exit code:如果为逻辑关系表达式,则结果为真,exit code为0,否则为1。 length STRING:返回STRING的长度 index STRING CHARSET:CHARSET中任意单个字符在STRING中最前面的字符位置,下标从1开始。如果在STRING中完全不存在CHARSET中的字符,则返回0。 substr STRING POSITION LENGTH:返回STRING字符串中从POSITION开始,长度最大为LENGTH的子串。如果POSITION或LENGTH为负数,0或非数值,则返回空字符串。 逻辑关系表达式 |:如果第一个参数非空且非0,则返回第一个参数的值,否则返回第二个参数的值,但要求第二个参数的值也是非空或非0,否则返回0。如果第一个参数是非空或非0时,不会计算第二个参数。 &:如果两个参数都非空且非0,则返回第一个参数,否则返回0。如果第一个参为0或为空,则不会计算第二个参数。 < <= = == != >= > 比较两端的参数,如果为true,则返回1,否则返回0。”==”是”=”的同义词。”expr”首先尝试将两端参数转换为整数,并做算术比较,如果转换失败,则按字符集排序规则做字符比较。 () 可以改变优先级,但需要用反斜杠转义 暂停 01:52
/
28:1800:00 进入全屏 50 相关推荐 |
|
来自: 山峰云绕 > 《Python代码知识游戏黑客编程与英语》