一:bash命令
bash test.sh //运行test.sh
bash -n test.sh //检查语法错误
bash -x test.sh //调试程序
bash -s filename //是否存在且非空
bash -t filename //文件描述符是否在终端打开
bash -N filename //文件上一次读取后是否被修改后
bash -O filename //当前有效文件是否为文件属主
bash -G filename //当前有效文件是否为文件属组
file1 -ef file2 //file1是否与file2的硬链接
file1 -nt file2 //file1是否新于file2
file1 -ot file2 //file1是否旧于file
二:变量的分类
-
set
显示所有变量,包括本地变量,全局变量以及一些函数. -
局部变量
作用域在当前shell,下一个bash不能使用.
[coder@15:21:00 ~]$ name=li
[coder@15:28:17 ~]$ echo $name
li
[coder@15:28:24 ~]$ bash
[coder@15:28:27 ~]$ echo $name
//无值显示
- 全局变量(环境变量)
需要用export(declare -x)暴露让外部使用,父进程可以传递给子进程,子子进程,不往上传.
[coder@15:31:19 ~]$ name=xx
[coder@15:32:30 ~]$ echo $name
xx
[coder@15:32:34 ~]$ export $name
[coder@15:32:43 ~]$ bash
[coder@15:32:47 ~]$ echo $name
xx
[coder@15:34:58 ~]$ env #显示所有的环境变量
XDG_SESSION_ID=3
HOSTNAME=bogon
SELINUX_ROLE_REQUESTED=
SHELL=/bin/bash
TERM=xterm
HISTSIZE=1000
SSH_CLIENT=192.168.159.129 6208 22
SELINUX_USE_CURRENT_RANGE=
SSH_TTY=/dev/pts/0
name=pp
- 可读变量
需要加关键词readonly,不可修改不可删除,通过declare -r可显示系统中的常量.
[coder@15:45:40 ~]$ declare -r
declare -r BASHOPTS="checkwinsize:cmdhist:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:progcomp:promptvars:sourcepath"
[coder@15:40:11 ~]$ name=mage
bash: name: 只读变量
[coder@15:44:25 ~]$ unset name
bash: unset: name: 无法删除设定: 只读 variable
-
位置变量
$1,$2对应的第一个变量.第二个变量
$0 命令本身
$* 传递给脚本的所有参数,全部参数合并为一个字符串
$@传递给脚本的所有参数,全部参数为单个字符
$#传递给脚本的参数个数
set-- 清空所有环境变量 -
内部变量
用local(declare -i)关键字修饰,只能在函数内部使用. -
其他
(command):不影响其他环境,也就只能执行一此
{command;}:在当前环境下执行.
注意:使用完变量需删除变量,unset name
三:算术运算符
(1)let var=算术表达式
(2)var=$[算术表达式]
(3)var=$((算术表达式)
(4)var=$(expr arg1 arg2 arg3 …)
(5)declare-i var=数值
(6)echo‘算术表达式’|bc
乘法符号有些场景中需要转义,如*
◆bash有内建的随机数生成器:$RANDOM(0-32767)
echo [ [ [RANDOM%50]:0-49之间随机数
四:逻辑运算
cmd1&&cmd2 #命令一为假不执行命令二,命令以为真,执行命令二
cmd1||cmd2 #命令一为真不执行命令二,命令以为假,执行命令二
五:字符串对比
shell中的比较不是使用简单的> = <等,而是用扩展符,如下所示:
符号 | 意义 |
---|---|
-eq | equal 等于 |
-ne | no equal 不等于 |
-gt | great than 大于 |
-lt | low than 小于 |
-ge | great and equal 大于等于 |
-le | low and equal 小于等于 |