####shell脚本基础#####

1. 基础概念

目的:许多指令集合在一起,循环,判断

格式:名字.sh(有颜色)

运行环境:#!/bin/bash  

运行文件: 1>chmod +x file  直接加文件绝对地址 使文件可执行

         2> sh file

引用:

1>弱引用:“” 保留字符串中所有字符的文字值,$`\除外

2>强引用:‘’ 保留字符串中所有字符的文字值,同时禁用所有扩展

3>转义:\ 保留下一个字符的文字值,

bash -x file.sh    #查看过程\

# ++表示先执行的命令

# + 表示后执行的命令

#    最后的结果

2. 具体内容

###{}引用变量eg

DD=q

PP=k

echo ${DD}_$PP  结果:q_k

###备份/ 的mail组的所有东西

 ~~~~~~

#!/bin/bash

TIME=$(date +%H:%M:%S)

mkdir /mnt/mail.$TIME

find /mnt -group mail -exec cp -rp {} /mnt/mail.$TIME/ \;

~~~~~

####新建用户###

#!/bin/bash

XUHAO=`wc -l /mnt/username |cut -d " " -f 1`

for NUM in $(seq 1 1 $XUHAO)

do

        USERNAME=`sed -n ${NUM}p /mnt/username`

        PASSWD=`sed -n ${NUM}p /mnt/passwd`

        useradd $USERNAME

        echo $PASSWD | passwd --stdin $USERNAME

done

~                                                                              

~       

###ping数台机器看能否通##

~~~~~

for IP in {1..35}

do

ping -c1 -w1 172.25.254.$IP &> /dev/null && echo 172.25.254.$IP ok || echo 172.25.254.$IP error

done

~~~~

###ping任意一台ip###

~~~~

#!/bin/bash

ping -c1 -w1 172.25.254.$1 &> /dev/null && echo 172.25.254.$1 is ok || echo 172.25.254.$1 is error

~~~~

####ping是否有ip

 

 

###其他####

read  “ ” -s(直接到cpu 即不显示)交互式变量

echo $? 0为正常退出值#表示前一条命令是否正确输出

exit 1 设置退出值为1

test=【】

###建立用户####

shell脚本基础_shell

###if命令(相比较&&  可以无限次判断eslf)###

if +条件

then +命令

else  不满足其他命令

fi(结束)

判定一个变量的值是不是空的【-z】

 

判断ping是否通并判断是否有ip

~~~

#!/bin/bash

if

[ -z $* ]

then

 echo "ERROR:you not give me ipaddress"

else

ping  -c1(只显示一行) -w1(之执行1s) $*()执行后面跟的第一个参数 &> /dev/nul &&(正确的) echo $* is up || echo $* is down

fi(结束)

~~~

####case###

if功能基本相同,但判断过程中同时判断,效率高

eg:当输入为westos时输出linux 输入linux时,输出westos

~~~~~~

case $1 in

        westos)

        echo linux

        ;;

        linux)

        echo westos

        ;;

        *)

        echo error

esac

~~~~

####expect######

扩展:send:向进程发送字符串;

expect:从进程接受字符串;

spawn:启动新的进程;

interact:允许用户交互;

yum install expect

expect eof (结束)

 

#####环境变量####

用户环境变量设置:vim /root/bash_profile--->export PATH export a=1--->检测:echo a

系统环境变量设置:vim /etc/profile---export PATH=$PATH:/mnt  export a=2

#alias

eg:alias xie=vim 即可以xie 法ile 打开vim  临时方法

 

长期设置: vim /etc/bashrc -->alias xi= 'vim'-->source /etc/bashrc

 

####脚本简写(函数)###

#!/bin/bash

IFCMD () {

if

[ $1 $2]  #表示函数IFCMD 后面第一位和第二位

then

echo $2 is $3

fi

}

IFCMD -f $1 file

IFCMD -d $1 direcotry

IFCMD -b $1 block

####end#####