第三本书 脚本学习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语句

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



原创粉丝点击