shell学习记录

1. shell变量

  • shell变量不需要声明,赋值即可定义变量,变量与等号之前不可以空格。
  • 使用时只要在变量名前加$即可,可选择性的用大括号将变量括起来;
  • 使用 readonly 命令可以将变量定义为只读变量 ;
  • 使用 unset 命令可以删除变量 ,但不能删除只读变量;
  • 字符串变量可用单引号、双引号括起来,单引号将内容原样输出,双引号可以变量替换和输入转义字符。

2. shell获取参数的特殊符号

$# 	传递到脚本的参数个数
$* 	以一个单字符串显示所有向脚本传递的参数。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
$$ 	脚本运行的当前进程ID号
$! 	后台运行的最后一个进程的ID号
$@ 	与$*相同,但是使用时加引号,并在引号中返回每个参数。如"$@"用「"」括起来的情况、
        以"$1" "$2" … "$n" 的形式输出所有参数。
$- 	显示Shell使用的当前选项,与set命令功能相同。
$? 	显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。

3. shell 运算符

shell支持多种运算符,但不支持简单的算术运算,要借助其它的命令来实现,如expr,要注意几点:

  • 表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2,
  • 完整的表达式要被 ` ` 包含,注意这个字符不是常用的单引号
  • 条件表达式要放在方括号之间,并且要有空格,
  • 乘号(*)前边必须加反斜杠(\)才能实现乘法运算;

关系运算符:( 假设 a=10,b=20 )

运算符说明举例
-eq检测两个数是否相等,相等返回 true[ $a -eq $b ] 返回 false。
-ne检测两个数是否相等,不相等返回 true。[ $a -ne $b ] 返回 true。
-gt大于[ $a -gt $b ] 返回 false。
-lt小于[ $a -lt $b ] 返回 true。
-ge大于等于[ $a -ge $b ] 返回 false。
-le小于等于[ $a -le $b ] 返回 true。
!取反[ ! false ] 返回 true
-o 、||或运算[ $a -lt 20 -o $b -gt 100 ] 返回 true
-a 、&&与运算

[ $a -lt 20 -a $b -gt 100 ] 返回 false

字符串运算符(假设 a="abc", b ="def")

运算符说明举例
是否相等[ $a = $b ] 返回 false。
!=是否不相等[ $a != $b ] 返回 true
-z字符串长度是否为0[ -z $a ] 返回 false
-n字符串长度是否不为0[ -n $a ] 返回 true
str字符串是否为空[ $a ] 返回 true。

文件测试运算符

运算符说明举例
-b file文件是否是块设备文件[ -b $file ]
-c file文件是否是字符设备文件[ -c $file ]
-d file文件是否是目录[ -d $file ]
-f file文件是否是普通文件(既不是目录,也不是设备文件)[ -f $file ]
-g file文件是否设置了 SGID 位[ -g $file ]
-k file文件是否设置了粘着位(Sticky Bit)[ -k $file ]
-p file文件是否是有名管道[ -p $file ]
-u file文件是否设置了 SUID 位[ -u $file ]
-r file文件是否可读[ -r $file ]
-w file文件是否可写[ -w $file ]
-x file文件是否可执行[ -x $file ]
-s file文件是否为空[ -s $file ]
-e file文件(包括目录)是否存在[ -e $file ]

4 shell流程控制

条件语句

#if语句
if condition
then
    command;
fi

#if else语句
if condition
then
    command;
else
    commend;
fi

#if else-if语句
if  condition
then
    command;
elif condition
then
    commend;
else
    commend;
fi

for 语句

for var in item1 item2 ... itemN
do
    command1
    command2
    ...
    commandN
done

while 循环

while condition
do
    command
done

#永真循环
while :
do
    command
done

while true
do
    command
done

until

until condition
do
    command
done

Case

case 值 in
模式1)
    command1
    command2
    ...
    commandN
    ;;
模式2)
    command1
    command2
    ...
    commandN
    ;;
esac

注意使用;;结束一个条件的执行,使用 * 捕获没有匹配的情况。

5. shell文件包含

使用.加空格或sources将shell脚本引入。

转载于:https://my.oschina.net/u/240297/blog/805632

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值