AI智能
改变未来

shell脚本学习——基础知识

一、常用快捷键

Tab键可补全命令和文件内容^c         终止运行的程序^z         前台运行的程序挂起到后台^d         退出^l         清屏^a         光标移动到命令行最前端^e         光标移动到命令行后端^u         删除光标前所有字符^k         删除光标后所有字符^r         搜索历史命令

二、常用通配符

*     匹配0或多个任意字符?     匹配任意单个字符[list]    匹配[]中任意单个字符或一组单个字符  [a-z][!list]     匹配除[]中包含的任意单个字符{string1,string2,...}   匹配{}中任意单个或多个字符   {1..8}bash中的引号:双引号“”    把引号内容看成整体,允许$调用其变量值单引号‘’    把引号内容看成整体,禁止调用变量值,shell特殊符号视为普通字符反撇号``    与$()一样,引号、括号里命令优先,如存在嵌套,反撇号无法使用

三、shell基础知识

shell种类: cat /etc/shells/bin/sh/bin/bash              默认shell/sbin/nologin          非交互,不能登录系统/bin/dash              功能相对较少/bin/csh               具有C风格的shell/bin/tcsh              csh增强版,兼容cshshell脚本基本写法:#!/bin/bash或     #!/bin/env 解释器执行方式: chmod +x shell.sh./shell.sh      或直接绝对路径非标准方式   bash shell.sh或      source shell.shbash +x shell.sh    查看执行过程bash +n shell.sh    检查脚本语法问题

四、变量

变量名=变量值A=hello         定义变量值echo $A         调用变量或 echo ${A}unset A         撤销变量变量定义规则:1、变量名严格区分大小写2、变量名不能有特殊字符 # ?@ !3、变量名不能以数字开头4、等号两边不能有空格5、变量名尽量见名知意变量定义方式:1、 A=1234567echo ${A:2:4}          输出  3456       调用变量的一部分,从第三个字符截取4个字符2、``   $()    可以把命令结果赋值给变量3、交互式定义变量  readread [选项] 变量名-p       定义提示用户信息-n       定义字符数-s       不显示输入内容-t       定义超时时间,秒read -p \"Input your name:\" nameread -s -p \"Input your password:\" passread -n 5 -p \"Input your name:\" name  限制用户名5个字符read -t 3 -p \"Input your name:\" name   限制输入时间3秒read -p \"Input your ip:\" IP < ip.txt      变量引用文件内容4、定义有类型的变量(declare)declare 选项 变量名=变量值-i    将变量作为整数       declare -i A=123-r    定义只读变量          declare -r B=hello-a   定义普通数组-A   定义关联数组-x   变量通过环境变量导出  declare -x AAA=123 相当于 export AAA=1235、本地变量与全局变量变量名=变量值      本地变量(只针对当前进程有效)env    查看当前用户的环境变量set     查看本地变量和环境变量export   导出环境变量系统启动后依次读取文件顺序:/etc/profile       全局变量,所有用户所有bash$HOME/.bash_profile  当前用户环境变量,用户登录时读取$HOME/.bashrc     当前用户bash信息,用户登录时读取/etc/bashrc      全局bash信息,别名,所有用户生效$HOME/.bash_logout   当前用户退出当前shell最后读取source    更改文件、变量生效系统变量$?        上一条命令的返回值$0        表示执行程序或脚本名$#        表示脚本后面参数个数$*        表示脚本后面所有参数,整体输出,每个变量空格隔开$@        脚本后面所有参数,参数独立,全部输出$1~$9     脚本后面位置参数${10}~${n}   扩展位置参数$$         当前进程号$!         当前终端后台运行任务的最后一个进程号!$         调用最后一条命令的参数

五、四则运算

四则运算符号:$((   ))$[  ]exprletbci++     先赋值,再运算++i     先运算,再赋值
赞(0) 打赏
未经允许不得转载:爱站程序员基地 » shell脚本学习——基础知识