shell脚本基础
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell脚本基础相关的知识,希望对你有一定的参考价值。
####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=【】
###建立用户####
###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#####
以上是关于shell脚本基础的主要内容,如果未能解决你的问题,请参考以下文章