Linux

shell编程100例—学习

2020-11-21  本文已影响0人  夜希辰

持续更新中,今年要好好学习shell呀。
原文章连接:shell编程100例

1、编写hello world脚本
[root@bigdata04 study_shell_100]# cat file1.sh 
#!/bin/env bash
#编写hello world脚本

echo "hello world"
[root@bigdata04 study_shell_100]# file1.sh 
hello world
2、通过位置变量创建 Linux 系统账户及密码
[root@bigdata04 study_shell_100]# cat file2.sh 
#!/bin/env bash
#通过位置变量创建linux系统账户及密码

#$1是执行脚本的第一个参数,$2是执行脚本的第二个参数

useradd "$1"
echo "$2" | passwd --stdin "$1"

知识点:
1)建立用户帐号:useradd 用户名

[root@bigdata04 study_shell_100]# useradd big

帐号建好之后,再用 passwd 设定帐号的密码

2)更改用户名密码:passwd 用户名

[root@bigdata04 study_shell_100]# passwd big
Changing password for user big.
New password: 
BAD PASSWORD: The password is shorter than 7 characters
Retype new password:
passwd: all authentication tokens updated successfully.

3)位置变量
参考文章:shell中$*,$@,$#的区别
参考文章:linux shell 中的位置变量

$@$*只在被双引号包起来的时候才会有差异
01)双引号括起来的情况:
$*将所有的参数认为是一个字段
$@以 默认为空格 来划分字段,如果空格在“”里面,不划分。

02)没有括起来的情况是$@$*一样的,见到空格就划分字段。
$#是 程序的 参数个数(不包括$0
$? 获取上一次命令执行的返回值,一般 执行 成功 返回0。
$0 $1 $2以此类推,取命令行参数,如 test.sh a b c ,则 $0是 test,$1是 a, $2是b,$3是c。

案例:

for name in xp wrg lct
do
useradd $name
echo red | passwd --stdin $name
done

解释:passwd --stdin $name是更改$name变量的密码,$name变量指代上面for循环的三个用户xp ,wrg, lct
加上--stdin是接受echo后面的字符串(red)做为密码,密码是red

意思就是,创建三个用户:xp ,wrg, lct
密码都是:red

3、备份日志,每周 5 使用 tar 命令备份/var/log 下的所有日志文件

解题思路:第一步编写日志备份脚本,第二步编写定时任务、执行日志备份的脚本
第一步编写日志备份脚本

[root@bigdata04 study_shell_100]# cat file3.sh 
#!/bin/env bash
#需求:每周 5 使用 tar 命令备份/home/study/shell_study/study_shell_100 下的所有文件
#脚本路径:/home/study

tar czf log-`date +%Y%m%d`.tar.gz ./study_shell_100

第二步编写定时任务

# crontab ‐e    #编写计划任务,执行备份脚本
#每周五的3 : 00执行脚本file3.sh

00 03 * * 5 /home/study/file3.sh

知识点:
1)压缩文件
tar命令可以用来压缩打包单文件、多个文件、单个目录、多个目录。
常用格式:
单个文件压缩打包 tar czvf my.tar file1
多个文件压缩打包 tar czvf my.tar file1 file2,...
单个目录压缩打包 tar czvf my.tar dir1
多个目录压缩打包 tar czvf my.tar dir1 dir2

2)定时任务
Linux下创建定时执行任务可使用crontab,系统默认自带crontab。
参考文章:设置定时执行任务

上一篇下一篇

猜你喜欢

热点阅读