概念和变量
一、认识Shell脚本
Shell是一种命令解释器,作用是按次序执行(遇到子脚本,先执行子脚本的命令)用户输入的命令和程序。
Shell脚本语言是弱类型语言,与其他脚本语言相比的优势是可以处理偏操作系统底层的业务。
查看系统默认Shell:
#方法一: echo $SHELL #方法二: grep root /etc/passwd
开发规范:
1)脚本第一行指定解释器
#!/bin/bash
2)开头添加版本、版权等信息
3)脚本中尽量不要用中文
4)扩展名为.sh
5)脚本应放在固定路径下
执行方法:
1)bash script-name或者sh script-name: 脚本没有x权限或者脚本开头没有指定解释器时,可用此方法,此方法也是常见的方法。
2)path/script-name:当前路径下执行脚本,脚本要有x权限。
3)source script-name 或者 . script-name:在当前shell中直接运行脚本(其他方式会开启新的shell),因此可将该脚本中的变量或者函数传递到当前shell中。
二、Shell变量
shell变量不区分类型,如果要指定变量类型也可用declare定义。
一)环境变量
1)所有环境变量都是系统全局变量,可以用于所有子进程中。
2)环境变量用export导出,但如果不写入指定配置文件(~/.bash_profile,~/.bash,/etc/bashrc,/etc/profile),退出命令行会丢失。
3)环境变量应使用大写。
显示环境变量:
set:输出所有变量,包括全局变量、局部变量。
env:显示环境变量。
declare:所有变量,函数,整数等。
set -o:所有参数配置信息。
unset消除本地变量和环境变量:
unset JAVA_HOME
系统环境文件读取流程:
1.通过系统用户登录时的流程:
2.非登录Shell
只会加载~/.bashrc或者/etc/bashrc
二)普通变量
定义本地变量
1 var_name1=12345 #为连续内容无需解析其他变量时可不用引号 2 var_name2=‘Do you have time.‘ #用单引号,原样输出 3 var_name3="No, I‘m working." #会对其中变量进行解析,其他同单引号 4 var_name4=`ls -alh` #获取命令结果 5 var_name5=$(ls -l) #同上
三)特殊位置参数变量
常用特殊位置参数说明:
进程中的特殊状态变量:
用法:
1)判断命令、脚本和函数是否执行成功
2)执行" exit 数字 " ,会返回数字给$?
3)在函数中" return 数字 ",效果同上
四)bash shell系统内置变量命令:
1)echo:在屏幕上输出变量 命令格式 echo args 其中arges可以是变量和字符串组合
2)eval:
命令格式:eval args
功能:当shell程序执行到eval语句时,shell读入参数args,并将它们组合成一个新的命令。
3)exec:
命令格式: exec 命令参数
功能:在不创建新的子进程前提下,转去执行指定的命令,指定命令执行完毕后,终结该进程。
4)read:
命令格式: read [参数] [变量名](该变量不能为特殊变量)
功能:从标准输入读取字符串等信息,传给shell内部定义的变量。
1 read -t 10 -p ‘Pls input the num: ‘ num
5)shilft:
命令格式:shilft—Shilft positional parameters
功能:在程序中每使用一次shilft语句,都会使所有位置参数向左移动一个位置。
6)exit:
退出shell,可选定一个数字作为返回值。
五)变量子串
六)特殊扩展变量
三、变量的数值计算
一)算术运算符
**:幂运算 其他略