#!/bin/bash 声明脚本使用的shell名称
变量的声明:name=value
不能有空格,name = value 会产生错误;同时value中也不能有空格如:name=a b也会产生错误,正确写法:
name="a b"(单引号和双引号的区别:"$name"会取出name的值,而'$name'直接解释出字面的表示)
转义字符\可以进行转换;
如果要将一个变量设置为一个命令的返回结果,有两种方式:
name=$(cmd)
name=`cmd` (反向单引号)
增加内容:PATH="$PATH":/home/bin
(1)echo命令:显示变量
echo $name或者echo ${name}
加-e表示解释\的转义
加-E表示忽略转义
echo -e "your name :$name"可以进行屏幕输出
(2)read命令:读取用户输入
read [-pt] name
-p后面接提示信息
-t后面接时间,表示等待用户的输入最长时间
read -p "please input ....:" name 可以读取用户的输入
(3)declare命令 bash可用,sh不可用
declare [-aixr] name=value
-a:定义为数组类型
-i:定义为整数类型
-x:定义为环境变量,同export
-r:设置为不可更改
(4)test命令:检测文件相关属性
test -e filename 检测文件是否存在
-f是否 存在且为文件
-d是否存在且为目录
test -r filename 检测文件是否可读
-w检测文件是否可写
-x检测文件是否可执行
&&与||:
cmd1&&cmd2:cmd1执行完毕且正确($?=0),开始执行cmd2;否则,cmd2不执行
cmd1||cmd2:cmd1执行完毕且正确($?=0),cmd2不执行;否则,cmd2执行
可以将test可&&、||结合使用如下:
test -e /dir && echo "exist" || echo "not exist"
(5)if判断
if [ 条件判断 ];then
...
elif[ 条件判断 ];then
...
else
...
fi
if条件判断里面可以用到 []判断
整数:
[n1 -eq n2] 两数值相等
-ne 不等
-gt 大于
-lt 小于
-ge 大于等于
-le 小于等于
字符串:
[-z string] 是否为空,空则为真
[-n string] 是否为非空,空为假
[str1 [!]= str2] 判断对等
注:if和括号以及括号中的空格很重要,少了会出错;
使用bash(sh)和source执行脚本的区别:
bash是在子进程里面执行,如果设置了一些变量,父进程中无法使用
(export可以将变量变成环境变量,使其能够在子进程中使用)
使用source执行脚本的时候,直接在父进程中执行,变量在脚本执行完毕之后仍然可以使用
几种循环方式:
while do done ,until do done (不定循环)
for do done (固定循环)