shell脚本

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell脚本相关的知识,希望对你有一定的参考价值。

在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
验证:
[[email protected] ~]# ./7.sh
Usage:./7.sh (-n| -e| -c| -r) 文件名
[[email protected] ~]# ./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
[[email protected] ~]# echo ${x/8/
}
15887542
#将所有的8 替换成
(多加一个/)
[[email protected] ~]# 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脚本的主要内容,如果未能解决你的问题,请参考以下文章

用于确保在任何给定时间仅运行一个 shell 脚本的 shell 片段 [重复]

常用python日期日志获取内容循环的代码片段

shell脚本引用expect

Shell脚本切割日志

Eclipse 中的通用代码片段或模板

Python如何调用别人写好的脚本