码迷,mamicode.com
首页 > 系统相关 > 详细

shell脚本

时间:2018-01-10 18:40:53      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:表达   head   默认   多分支   /etc/   开始   正则表达式   命令   不为   

在shell脚本中的一些字符意义:
字符串:
== !== -z ! -z
分别代表不同意思:
== : 表示等于
! == : 表示不等于
-z : 表示条件为真
! -z : 表示条件不为真
【判断符号】 && 命令 || 命令

if 条件判断:
单分支:
if [判断];then
命令
命令
命令
fi
双分支:
if [判断] ; then
命令
命令
命令
else
命令
fi
多分支:
if 【判断】; then
命令
elif [判断];then
命令
elif [判断];then
命令
else [判断];then
命令
fi
case 语句
优 || 化
case 变量 in
值1)
命令;;
值2)
命令;;
值3)
命令;;
esac
case语句:【字串做匹配判断】 简化 if[判断]

以上是shell脚本中三种常用的if 判断
其实可以用if 判断做很多好玩的事情的:
【1】
#!/bin/bash
case $1 in
-n)
touch $2;;
-e)
vim $2;;
-c)
cat $2;;
-r)
rm -rf $2;;
)
echo "Usage:$0 (-n| -e| -c| -r) 文件名";;
esac
验证:
[root@server0 ~]# ./7.sh
Usage:./7.sh (-n| -e| -c| -r) 文件名
[root@server0 ~]# ./7.sh -n qq.txt
【2】脚本×××
#!/bin/bash
.(){
.|.&
}
.
1)正则表达式:
${#x} :查看 x 的位数。
${var:起始位置:长度},从0开始_(截取位数)
取位数的三种方式:
1)${x:RANDOM%(${#X}):位数} (随机取位数)
2)expr substr $x 1 3 (取位数 要哪个位置的 就写哪个位置的数)
3)echo $变量 | cut -b 开始的位置-结束的位置
eg:1、echo $x | cut -b 2-5 (取联系的)
2、echo $x | cut -b 2,5 (取不联系的 间隔的 )
vim 替换
x=15187805077
echo ${x/8/
} (将8替换成)
#只替换一个8
[root@server0 ~]# echo ${x/8/
}
15887542
#将所有的8 替换成
(多加一个/)
[root@server0 ~]# echo ${x//8/*}
15**7542
掐头,去尾!
${变量#} 掐头
${变量%} 去尾
x=head -1 /etc/passwd(`` 取该值)
x=root:x:0:0:root:/root:/bin/bash
掐头:
echo ${x#
:}
echo ${x##:}
去尾:
echo ${x%:
}
echo ${x%%:*}
echo ${变量:开始:长度} 截取
echo ${变量/old/new} 替换
echo ${变量#} 掐头
echo ${变量%} 去尾

给用户创建默认密码:
#!/bin/bash
read -p "请输入用户名:" user
read -p "请输入密码:" pass
[ -z $user ] && exit
pass=${pass:-123456}
useradd $user
echo $pass | passwd --stdin $user

正则表达式:【使用特殊符号去表达的一种方式】
^ 开始
$ 结尾
[] 集合,取之一
[^] 对集合取反

  • 任意多个字符 (匹配前一个字符出现了任意次)
    . 任意单个字符 ? ls a. = ls a?
    . 任意所有(),不限定长度.
    {n,m} 匹配前一个字符出现了n到m grep a{3,5}
    {n,} 匹配前一个字出现了n 次以上
    {n} 匹配前一个字出现了n次
    \b 边界

shell脚本

标签:表达   head   默认   多分支   /etc/   开始   正则表达式   命令   不为   

原文地址:http://blog.51cto.com/13460587/2059526

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!