第三本书 脚本学习2
来源:互联网 发布:win10网络共享速度慢 编辑:程序博客网 时间:2024/03/28 20:42
####脚本学习2####
1.Bash位置参数
(1).read -p '####:' FIRST LAST
(2).Bash解析的个别参数或整个原始命令行。
指定的位置参数总数:$#
位置参数自身:$0、$1、$2、$3....
所有位置参数: $@、$*
2.退出状态
Linux命令完成时,将返回退出状态。成功完成程序时,将返回0的推出状态。这被bash
当作逻辑True值。非零退出状态通常表示发生了错误,并且被bash当作逻辑False值。
例如:grep的退出状态的含义:
0 – 在指定的文件中找到了模式
1 – 在指定的文件中未找到模式
>1 – 一些其他错误(无法打开文件、错误的搜索表达式等)
推出状态的值被存储在"?"中,可以使用以下命令查看:
# echo $?
3.test条件判断
test命令可用于评估bash脚本中的表达式。它评估其参数所指定的表达式,如果表达式
为true,返回零退出状态,如果表达式为false,则返回非零退出状态。test具有替代语
法,使用方括号"[]"将表达式括起来,这样更易于阅读。
语法:test EXPRESSION 或 [EXPRESSION]
非零或零长度字符串运算符:test -{n|z} STRING
[ -n $a ] ##判断$a为非0长度字符串
[ -z $a ] ##判断$a为0长度字符串
字符串比较运算符:=、!=
[ x = x ];echo $?
0
[ x = y ];echo $?
1
[ x != x ];echo $?
1
[ x != y ];echo $?
0
数字比较运算符:-eq、-ne、-lt、-le、-gt、-ge
-eq 等于
-ne 不等于
-lt 小于
-le 小于等于
-gt 大于
-ge 大于等于
文件状态运算符:test -{b|c|e|f|d|r|w|x|s|L} FILE/DIRECTORY
设计脚本判断文件类型
-b ##块设备文件
-c ##字符设备文件
-e ##文件是否存在
-f ##常规文件
-d ##目录
-S ##套接字文件
-L ##链接
二进制文件运算符:-ef、-nt、-ot
-ef ##两个文件是否相同
-nt ##第一个文件是否比第二个新
-ot ##第一个文件是否比第二个旧
逻辑运算符:-o、-a、!、&&、||
-a ##且
-o ##或
! ##取相反
&& ##正确输出
|| ##错误输出
4.if 语句
#!/bin/bash
if
[ -z "$1" ] ##判断脚本后是否填写$1
then
echo "please give me a filename"
elif
[ ! -e "$1" ] ##判断$1文件是否存在
then
echo "$1 is not exist"
else
for NAME in `cat $1`
do
useradd $NAME
done
fi
5.case语句
case语句 :它能够把变量的内容与多个模板进行匹配,再根据成功匹配的模板去决定应该执行哪
部分代码。
#!/bin/bash
case "$1" in
start)
systemctl start $2
;;
stop)
systemctl stop $2
;;
restart)
systemctl restart $2
;;
*) ##第一个变量为其他
echo "give me a command"
;;
esac
6.expect语句
vim /mnt/answer.exp
expect eof
作用是在输出中搜索文件结束符,如果没有这一行,脚本会立即退出,得不到正确结果。
interact
执行完成后保持交互状态,把控制权交给控制台,这个时候就可以手工操作了。否则退出登录。
7.环境变量
shell和脚本使用变量来存储数据 ,有些变量可以连同它们的内容传递给子进程,这些
变量我们称之为环境变量。
(1)临时设置
(2)用户级别设置
vim ./.bash_profile
export LINUX=redhat
source ./.bash_profile ##重置
当登陆其他用户时无效
(3)系统级别设置
vim /etc/profile
export a=2
source /etc/profile
所有用户都有效
8.别名
alias命令可以用来自定义属于自己的系统命令
(1)临时设置
(2)永久设置
vim ./.bashrc
alias xie='vim'
source ./.bashrc
(3)删除别名
unalias xie
9.函数
#!/bin/bash
ACTION () {
if [ $2 $1 ];then
echo "$1 is $3"
fi
}
ACTION $1 '! -e' 'not exist' ##函数中ACTION后 三位分别代表$1 $2 $3
ACTION $1 '-b' 'bite file'
ACTION $1 '-f' 'file'
ACTION $1 '-L' 'link'
ACTION $1 '-d' 'directory'
ACTION $1 '-c' 'c'
ACTION $1 '-S' 's'
建立删除用户脚本
[ -z "$4" ] ##当脚本后无$4
then
echo please bive me a address
elif
[ ! -e "$4" ] ##当$4不存在时
then
echo "$4 is not exist"
else
for NAME in `cat $4`
do
USER=`getent passwd $NAME` ##设置$USER可查看用户是否存在
if
[ $1 "$USER" ]
then
$2 $NAME
[ "$2" = "useradd" ]&&(echo westos |passwd --stdin $NAME)
else
echo $NAME $3
fi
done
fi
}
if
[ "$1" = "create" ]
then
ACTION -z 'useradd' 'exist' $2 ##ACTION脚本中的$1$2$3$4 分别为 -z useradd exist 新脚本中的$2
elif
[ "$1" = "delete" ]
then
ACTION -n 'userdel -r' 'not exist' $2
else
echo "Useage: test.sh <create|delete> <userfile>"
fi
1.Bash位置参数
(1).read -p '####:' FIRST LAST
(2).Bash解析的个别参数或整个原始命令行。
指定的位置参数总数:$#
位置参数自身:$0、$1、$2、$3....
所有位置参数: $@、$*
2.退出状态
Linux命令完成时,将返回退出状态。成功完成程序时,将返回0的推出状态。这被bash
当作逻辑True值。非零退出状态通常表示发生了错误,并且被bash当作逻辑False值。
例如:grep的退出状态的含义:
0 – 在指定的文件中找到了模式
1 – 在指定的文件中未找到模式
>1 – 一些其他错误(无法打开文件、错误的搜索表达式等)
推出状态的值被存储在"?"中,可以使用以下命令查看:
# echo $?
3.test条件判断
test命令可用于评估bash脚本中的表达式。它评估其参数所指定的表达式,如果表达式
为true,返回零退出状态,如果表达式为false,则返回非零退出状态。test具有替代语
法,使用方括号"[]"将表达式括起来,这样更易于阅读。
语法:test EXPRESSION 或 [EXPRESSION]
非零或零长度字符串运算符:test -{n|z} STRING
[ -n $a ] ##判断$a为非0长度字符串
[ -z $a ] ##判断$a为0长度字符串
字符串比较运算符:=、!=
[ x = x ];echo $?
0
[ x = y ];echo $?
1
[ x != x ];echo $?
1
[ x != y ];echo $?
0
数字比较运算符:-eq、-ne、-lt、-le、-gt、-ge
-eq 等于
-ne 不等于
-lt 小于
-le 小于等于
-gt 大于
-ge 大于等于
文件状态运算符:test -{b|c|e|f|d|r|w|x|s|L} FILE/DIRECTORY
设计脚本判断文件类型
-b ##块设备文件
-c ##字符设备文件
-e ##文件是否存在
-f ##常规文件
-d ##目录
-S ##套接字文件
-L ##链接
二进制文件运算符:-ef、-nt、-ot
-ef ##两个文件是否相同
-nt ##第一个文件是否比第二个新
-ot ##第一个文件是否比第二个旧
逻辑运算符:-o、-a、!、&&、||
-a ##且
-o ##或
! ##取相反
&& ##正确输出
|| ##错误输出
4.if 语句
#!/bin/bash
if
[ -z "$1" ] ##判断脚本后是否填写$1
then
echo "please give me a filename"
elif
[ ! -e "$1" ] ##判断$1文件是否存在
then
echo "$1 is not exist"
else
for NAME in `cat $1`
do
useradd $NAME
done
fi
5.case语句
case语句 :它能够把变量的内容与多个模板进行匹配,再根据成功匹配的模板去决定应该执行哪
部分代码。
#!/bin/bash
case "$1" in
start)
systemctl start $2
;;
stop)
systemctl stop $2
;;
restart)
systemctl restart $2
;;
*) ##第一个变量为其他
echo "give me a command"
;;
esac
6.expect语句
yum install expect -y
vim /mnt/test.sh
vim /mnt/answer.exp
expect eof
作用是在输出中搜索文件结束符,如果没有这一行,脚本会立即退出,得不到正确结果。
interact
执行完成后保持交互状态,把控制权交给控制台,这个时候就可以手工操作了。否则退出登录。
##ssh脚本##
7.环境变量
shell和脚本使用变量来存储数据 ,有些变量可以连同它们的内容传递给子进程,这些
变量我们称之为环境变量。
(1)临时设置
(2)用户级别设置
vim ./.bash_profile
export LINUX=redhat
source ./.bash_profile ##重置
当登陆其他用户时无效
(3)系统级别设置
vim /etc/profile
export a=2
source /etc/profile
所有用户都有效
8.别名
alias命令可以用来自定义属于自己的系统命令
(1)临时设置
(2)永久设置
vim ./.bashrc
alias xie='vim'
source ./.bashrc
(3)删除别名
unalias xie
9.函数
#!/bin/bash
ACTION () {
if [ $2 $1 ];then
echo "$1 is $3"
fi
}
ACTION $1 '! -e' 'not exist' ##函数中ACTION后 三位分别代表$1 $2 $3
ACTION $1 '-b' 'bite file'
ACTION $1 '-f' 'file'
ACTION $1 '-L' 'link'
ACTION $1 '-d' 'directory'
ACTION $1 '-c' 'c'
ACTION $1 '-S' 's'
建立删除用户脚本
[ -z "$4" ] ##当脚本后无$4
then
echo please bive me a address
elif
[ ! -e "$4" ] ##当$4不存在时
then
echo "$4 is not exist"
else
for NAME in `cat $4`
do
USER=`getent passwd $NAME` ##设置$USER可查看用户是否存在
if
[ $1 "$USER" ]
then
$2 $NAME
[ "$2" = "useradd" ]&&(echo westos |passwd --stdin $NAME)
else
echo $NAME $3
fi
done
fi
}
if
[ "$1" = "create" ]
then
ACTION -z 'useradd' 'exist' $2 ##ACTION脚本中的$1$2$3$4 分别为 -z useradd exist 新脚本中的$2
elif
[ "$1" = "delete" ]
then
ACTION -n 'userdel -r' 'not exist' $2
else
echo "Useage: test.sh <create|delete> <userfile>"
fi
阅读全文
0 0
- 第三本书 脚本学习2
- 第三本书 脚本学习1
- 第三本书 数据库
- 第三本书 apache
- 第三本书 squid
- 第三本书firewalld
- 第三本书 pxe
- 第三本书 unit1 DNS
- 第三本书 postfix邮件
- 第三本书 iptables服务
- Weex学习第三篇:模版,样式,脚本
- 个人学习第三章节:常见脚本
- S2第一本书第三章上机
- s2第二本书第三章
- 第三本书 高级网络配置
- 第三本书 postfix&mysql dovecot&mysql
- 第三本书 samba数据共享
- 第三本书 nfs数据共享
- 虚心竹有低头叶 傲骨梅无仰面花
- [机器学习笔记]奇异值分解SVD简介及其在推荐系统中的简单应用
- 区域生长分割点云
- 基于TCP协议的客户端/服务器
- Excel VBA高效办公应用-第十三章-工资条与工资查询-Part1 (制作工资条)
- 第三本书 脚本学习2
- HEX文件合并
- leetcode54. Spiral Matrix
- reset.css 重置浏览器标签的样式表(源码)
- LeetCode 538. Convert BST to Greater Tree (C++)
- 模块间信号量与执行任务挂起问题
- 生产服务器环境最小化安装后 Centos 6.5优化配置备忘
- MySQL关闭密码强度验证
- HDU