shell脚本中,在一行输入多个命令时:
A;B;C #执行A;执行B;执行C
A&&B #执行A,仅当A成功,才执行B
A||B #执行A,仅当A失败,才执行B
#id tim &>/dev/null && echo "hi,tim" || echo "no such user"
#id tim执行成功,则用户存在,显示hi,tim,否则显示no such user
脚本1:编辑脚本test1.sh,执行脚步可新增用户和密码,设置密码时不显示。
#!/bin/bash read -p "请输入用户名:" user stty -echo read -p "请输入密码:" pass stty echo [ -z $user ] && echo "需要输入" && exit [ -z $pass ] && exit useradd $user echo "$pass" | passwd --stdin $user
备注:
read #输入
stty -echo #输入命令时不回显
stty echo #回显
[ -z $abc1 ] #测试abc1是否为空
脚本2:
#!/bin/bash read -p "随机说一个数字:" cai s=$[RONDOM%10] if [ $cai -eq $s ] then echo "你猜对了" elif [ $cai -gt $s ] then echo "太大了" else echo "太小了" fi
脚本3:新增用户,不输入密码默认初始密码为123456
备注:1.[ -z $user ] && exit #用户为空时退出
2.pass=${pass:-123456} #pass有值则为自己的值,pass无值则为123456
脚本4:修改文件名,将后缀.txt改为.doc
扩展:将文件后缀名任意更改,创建脚本test2.sh
或者
#./test2.sh $1 $2
比如:#./test2.sh jpg png
脚本5:提示用户输入一个整数x,如果没有输入,默认为100,脚本自动计算1到x所有数的和。
脚本6:批量远程连接时,不出现交互(自动输入密码,yes等)
备注:1.安装expect
2.expect <<EOF期待非交互格式,EOF结束
3.expect最后一行代码,不执行
expect常见问题:
1.如果ssh反应慢,执行失败
解决:a.修改配置文件#vim /etc/ssh/sshd_config
UseDNS no
#systemctl restart sshd
b.脚本中写入set timeout 300 #设置延迟时间
2.有些有yes,有些没有
rm -rf .sh/known_hosts