shell 脚本记录
#!/bin/bash #是注释 #!/bin/bash 指定/bin/bash解释
chmod +x t.sh 加可执行权限 执行
执行方式
./test.sh 这是 开启了一个子进程执行脚本
/bin/bash test.sh 这样是开启一个子进程脚本 但是 他可以不需要可执行权限
source ./test.sh 不要开启子进程 执行脚本
export t1='你好' 设置环境变量
unset t1 删除变量 环境变量 局部变量 都可以删除
local t2='你好' local 定义本地变量
文件名代换
mkdir ch[0-9]
命令代换 反引号` 先执行该命令 将结果代换到当前命令行追踪
date=`date` 获取当前服务器时间
用圆括号也可以 实现命令代换
date= $(date)
算数代换
$(()) (()) 中的shell 变量取值转换成整数
age=45
echo $(($age+3))
转义字符
\
echo \$SHELL
单引号 保持引号内所有字符字面值
双引号 它防止通配符扩展,但允许变量扩展。这点与单引号的处理方式不同
t1=200
echo $t1
echo '$t1'
echo "$t1"
显示结果
200
$t1 这个单引号的结果
200
test 是条件测试
正常是 0falase 1ture 但是这里 0是true 1是false
[ ] 方括号 需要空格隔开
[ -d DIR ] 如果DIR存在并且是一个目录则为真
[ -f FILE ] 如果FILE存在且是一个普通文件则为真
[ -z STRING ] 如果STRING的长度为零则为真
[ -n STRING ] 如果STRING的长度非零则为真
[ STRING1 = STRING2 ] 如果两个字符串相同则为真
[ STRING1 == STRING2 ] 同上
[ STRING1 != STRING2 ] 如果字符串不相同则为真
[ ARG1 OP ARG2 ] ARG1和ARG2应该是整数或者取值为整数的变量,OP是-eq(等于)-ne(不等于)-lt(小于)-le(小于等于)-gt(大于)-ge(大于等于)之中的一个
[ ! EXPR ] EXPR可以是上表中的任意一种测试条件,!表示“逻辑反(非)”
[ EXPR1 -a EXPR2 ] EXPR1和EXPR2可以是上表中的任意一种测试条件,-a表示“逻辑与”
[ EXPR1 -o EXPR2 ] EXPR1和EXPR2可以是上表中的任意一种测试条件,-o表示“逻辑或”
条件判断语句
if [ $a == $b ]
then
echo "a 等于 b"
elif [ $a -gt $b ]
then
echo "a 大于 b"
elif [ $a -lt $b ]
then
echo "a 小于 b"
else
echo "没有符合的条件"
fi
Shell还提供了&&和||语法 条件与 && 条件或 ||
case 语句
case 语句的结构:
case 变量值 in
模式 1)
命令序列 1
;;
模式 2)
命令序列 2
;;
*)
默认命令序列
esac
for 语句
for fruit in apple orange; do
echo "打印水果$fruit"
done
while 语句
echo "Enter password:"
read TRY
while [ "$TRY" != "secret" ]; do
echo "Sorry, try again"
read TRY
done
break contiune
$0 相当于C语言main函数的argv[0]
$1、$2... 这些称为位置参数(Positional Parameter),相当于C语言main函数的argv[1]、argv[2]...
$# 相当于C语言main函数的argc - 1,注意这里的#后面不表示注释
$@ 表示参数列表"$1" "$2" ...,例如可以用在for循环中的in后面。
$* 表示参数列表"$1" "$2" ...,同上
$? 上一条命令的Exit Status
$$ 当前进程号
/bin/bash -n ./a.sh 读一遍脚本中的命令但不执行,用于检查脚本中的语法错误
/bin/bash -v ./a.sh 一边执行脚本,一边将执行过的脚本命令打印到标准错误输出。
/bin/bash -x ./a.sh 提供跟踪执行信息,将执行的每一条命令和结果依次打印出来。
exec
exec 命令能够在不创建新的子进程的前提下,转去执行指定的命令,当指定的命令执行完毕后,该
进程就终止了
exit
exit ,退出 shell 程序。在 exit 之后可以有选择地指定一个数作为返回状态
浙公网安备 33010602011771号