目录
定义变量:
使用变量:
将命令的结果赋值给变量:
删除变量:unset
退出当前进程:exit
读取从键盘输入的数据 :read
对整数进行数字运算:(())
逻辑与或:
检测某个条件是否成立:
管道(可将两个或多个命令连接在一起,上一个命令的输出信息会作为下一个命令的输入信息):command1 | command2
if语句
if else语句
if elif else语句
case in语句
for in循环
while循环
函数
Shell脚本(shell命令按一定语法组成的文件)作用:
软件启动;
性能监控;
日志分析;
...
shell命令本质:内置命令/外部命令(应用程序)。(可由type
例如:创建一个hello的c文件,意在终端输出hello world。然后编译这个c文件(gcc hello.c -o hello),然后把hell移动到/usr/bin/。
当向终端输入hello时,终端输出hello world。这个c文件就成了shell的外部命令。
常用的shell解释器:/etc/shells
shell脚本常用后缀名:.sh
Shell启动方式
当程序运行(./)
指定解释器运行(/bin/bash)
source和.
Shell脚本语法
variable=value
variable='value'(符号内不做逻辑判断)
variable="value"。
$variable
${variable}
variable=`command`
variable=$(command)
特殊变量 | 描述 |
$0 | 当前脚本的文件名 |
$n(n>=1) | 传递给脚本或函数的参数。n是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2 |
$# | 传递给脚本或函数的参数个数 |
$* | 传递给脚本或函数的所有参数 |
$@ | 传递给脚本或函数的所有参数。当被双引号“”包含时,$@与$*稍有不同 |
$? | 上个命令的退出状态或获取函数返回值 |
$$ | 当前Shell进程ID。对于Shell脚本,就是这些脚本所在的进程ID |
command1&&command2
command1||command2
test expression
[ expression ]
选项 | 描述 |
-eq | 判断数值是否相等 |
-ne | 判断数值是否不相等 |
-gt | 判断数值是否大于 |
-lt | 判断数值是否小于 |
-ge | 判断数值是否大于等于 |
-le | 判断数值是否小于等于 |
-z str | 判断字符串str是否为空 |
-n str | 判断字符串str是否为非空 |
=和== | 判断字符串str是否相等 |
-d filename | 判断文件是否存在,并且是否为目录文件 |
-f filename | 判断文件是否存在,并且是否为普通文件 |
if condition
thenstatement(s)
fi
if condition
thenstatement1
elsestatement2
fi
if condition1
thenstatement1
elif condition2
thenstatement2
...
elsestatement
fi
case expression inpattern1)statement1;;pattern2)statement2;;pattern3)statement3;;
......*)statementn;;
esac
for variable in value_list
dostatements
done
value_list:
直接给出具体的值;
给出一个取值范围;
使用命令的执行结果;
使用Shell通配符;
使用特殊变量。
while condition
dostatements
done
function name(){statements[return value]
}
shell进程每次启动时,它都会执行shell配置文件的代码来做一些初始化的工作。
如果我们将shell变量的定义放到shell配置文件的话,shell进程一启动,就回去定义这些变量。
与Bash Shell有关的配置文件主要有:
/etc/profile
~/.bash_profile
~/.bash_login
~/.profile
~/.bashrc
/etc/bashrc
/etc/bash.bashrc
/etc/profile.d/*.sh
Shell执行顺序:/etc/profile、~/.profile(~/.bash_profile、~/.bash_login)
shell启动方式对变量的影响