一、什么是变量
变量即可以变化的量
二、变量名称注意事项
三、变量类型
四、变量操作
五、bash变量类型
本地变量
VAR_NAME=VALUE //本地变量,作用域为当前shell进程。对当前shell外的其它shell进程,包括当前shell的父shell、子shell进程均无效 local VAR_NAME=VALUE //局部变量,作用域为当前代码段,常用于函数
环境变量
export VAR_NAME=VALUE //作用域为当前shell进程及其子进程
位置变量
$1,$2,$3,.... //用来引用脚本的参数 shift [num] //位置变量使用完以后退出,后面的参数向前推进
特殊变量
$# //是传给脚本的参数个数 $0 //是脚本本身的名字 $! //是shell最后运行的后台Process的PID $@ //是传给脚本的所有参数的列表 $* //是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个 $$ //是脚本运行的当前进程ID号 $? //是显示上条命令的退出状态,0表示没有错误,其他表示有错误
bash内建环境变量
PATH SHELL UID HISTSIZE HOME PWD HISTFILE PS1
只读变量(常量)
readonly VAR_NAME=VALUE //不能修改值,不能销毁,只能等shell进程终止时随之消亡
∗和@ 的区别为: ∗和@ 都表示传递给函数或脚本的所有参数,不被双引号(" ")包含时,都以"1""2" … "n"的形式输出所有参数。但是当它们被双引号("")包含时,"*" 会将所有的参数作为一个整体,以"12 … n"的形式输出所有参数;"@" 会将各个参数分开,以"1""2" … "$n" 的形式输出所有参数。
$? 可以获取上一个命令的退出状态。所谓退出状态,就是上一个命令执行后的返回结果。退出状态是一个数字,一般情况下,大部分命令执行成功会返回 0,失败返回 1。
一、Shell 可以是一个程序,提供一个与用户对话的环境。这个环境只有一个命令提示符,让用户从键盘输入命令,所以又称为命令行环境( command line interface ,简写为 CLI )。 Shell 接收到用户输入的命令,将命令送入操作系统执行,并将结果返回给用户。
二、Shell 也可以是一个命令解释器,解释用户输入的命令。它支持变量、条件判断、循环操作等语法,所以用户可以用 Shell 命令写出各种小程序,又称为脚本 script。这些脚本都通过 Shell 的解释执行,而不通过编译。
三、Shell 还可以是一个工具箱,提供了各种小工具,供用户方便地使用操作系统的功能。
Shell 不像 C 语言, C++、Java 等编程语言那么完整,但是 Shell 这门语言可以帮助我们完成很多自动化任务,例如:保存数据,监测系统的负载,等等。
Shell 相比 C 等语言的优势在于它是完全嵌入在 Linux 中的,不需要安装,编译。
一、Shell 有很多种,只要能给用户提供命令行环境的程序,都可以看作是 Shell 。
二、历史上,主要的 Shell 有下面这些:
一、计算机脚本程序是确定的一系列控制计算机进行运算操作动作的组合,在其中可以实现一定的逻辑分支等。
二、通俗的理解就是,多个 Shell 命令的组合并通过 if 条件分支控制或循环来组合运算,实现一些复杂功能。
三、例如我们常用的 ls 命令,它本身也是一个 Shell 脚本,通过执行这个 Shell 脚本可以列举当前目录下的文件列表。
编写我们的第一个 Shell 脚本 hello.sh
#!/bin/bash # 执行的命令主体 ls echo "hello world"
如果我们不是 root 用户的话,需要给脚本添加可执行权限才可以运行, chmod +x hello.sh 。
增加执行权限后可以执行 ./hello.sh 来运行该脚本,也可以使用 bash -x hello.sh 以调试模式运行脚本。
上面是通过 ./hello.sh 的方式执行的脚本文件,每次都需要添加路径,那么我们可以像执行 ls 一样,直接执行 hello.sh 吗,答案是可以的。
1.echo $PATH 获取系统里所有可以被直接执行程序的路径。
2.sudo cp hello.sh /usr/bin 将 hello.sh 拷贝到上诉任意一个 path 路径路径中,这里拷贝到 /usr/bin 。
3.现在可以直接运行 hello.sh 命令而不需要添加路径了。
A=3 B=6 let C=$A+$B //let 算术运算表达式 C=$[$A+$B] //$[算术运算表达式] C=$(($A+$B)) //$((算术运算表达式)) C=`expr $A + $B` //expr 算术运算表达式,表达式中各操作数及运算符之间要有空隔,而且要使用命令引用
一、逻辑与:&& 第一个条件为假时,第二个条件不用再判断,最终结果已经有 第一个条件为真时,第二个条件必须得判断
二、逻辑或:|| 前一个命令的结果为真时,第二个命令就不执行 前一个命令的结果为假时,第二个命令必须执行