一、执行脚本命令汇总
- bash text.sh
- chmod a+x text.sh ./text.sh
- 将当前文件所在的路径加入到环境变量中去,即修改环境变量,则可只输入文件名即能执行文件
export PATH=$PATH:/(软件的路径名)
二、shell传参
- 脚本命令行输入传参——在执行命令时后加位置参数(利用$0,$1等),示例如下图:
- 用read命令传参(在执行命令后由键盘输入参数)
注意:如果脚本中有输入语句read a b;执行时输入4,5,6,则a=4,5,6 而b为空 (注意以空格分隔)
三、常用技巧
1.可以将路径或文件名设置成变量,使代码更简洁、易维护
2.文件名格式为“文件名_bak_年月日_时分秒”可以如下表示:
四、综合示例
- 编写脚本程序判断当前用户是否为root管理员,如果是,则执行tar对/etc/目录执行备份。
注意:&>/dev/null指无论正确的还是错误的输出都重定向到空设备,就是不要输出信息。/dev/null表示一个空设备。 - 编写脚本程序程序,将当前目录下所有的.txt文件更名为.doc文件
注意:
(1)在Linux系统中不支持mv *.txt *.doc这样的更名命令形式,如果需要将文件成批地更名最好编写一个shell脚本文件。
(2)在for语句的参数列表中使用了“*”通配符。
(3)在程序中用到basename命令,该命令从随后的文件名剥去指定的后缀。
(4)dirname 获取文件的目录名。 - 使用user.txt文件中的人员名单,在计算机中自动创建对应的账户并配置初始密码为“123456”。
#!/bin/bash
for i in `cat user.txt`
do
useradd $i
echo “123456”|passwd --stdin $i
done
- 每隔5分钟检查指定的用户是否登录系统。
- 根据时间备份/var/log 日志目录,仅备份周三、周五的数据
- 编写脚本,检查密码,如果用户三次输入密码均错误,则退出脚本
#!/bin/bash
num=3
PASSWORD=123456 #initial password
sum=0
while true
do
read -p "please input your password:" pass
sum=$((sum+1))
if [ $pass == $PASSWORD ];then #注意then必须接在if语句后面否则报错
echo "you are right!"
exit
elif[ $sum -lt 3 ];then
continue
else
exit
fi
done