Shell脚本入门

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shell脚本入门相关的知识,希望对你有一定的参考价值。

Shell脚本

DKing~共享
1.1 脚本概念

将多个命令先放入到一个文件中,方便一次性执行的一个程序文件
统一脚本存放目录:/server/scripts
推荐使用vim编辑脚本
查看脚本执行过程 :sh -x 脚本
1.2 脚本编辑格式:

#!/bin/bash
#author:dqf
#date:2018/1/11
#ver:1.0
#desc:backup /etc to /backup
脚本编辑示例:
#!/bin/bash
#author:dqf
#date:2018/1/11
#ver:1.0
#desc:backup /etc to /backup
cd /
tar zchf /backup/etc-date +%F-%a-%T.tar.gz etc/
find /backup/ -type f -mtime +7 ! -name "etc-*-Mon.tar.gz" | xargs mv -t
/tmp
1.3 变量概念

系统中存在的可以随时变化对操作环境有影响的变化的文件

  1. 变量分类:
    全局变量,又称环境变量,全局都可使用
    局部变量,又称普通变量,当前环境使用
  2. 赋予变量:
    DQF=123(普通变量)
    export DQF=123(环境变量)
    永久生效:放入/etc/profile中
    source dqf.sh 执行脚本也可以生效
  3. 显示变量:

    echo $DQF

    123

    echo ${DQF}

    123
    $DQF==${DQF}

  4. 与变量有关的文件
    ~/.bash_profile ~/.bashrc /etc/profile /etc/bashrc
  5. 与变量有关的目录:/etc/profile.d/
    实例1-1 将cowsay.sh放入到/profile.d/目录下

    /usr/bin/cowsay Hello,World! 写入脚本放入/etc/profile.d/目录


    < Hello,World! >

    \   ^__^
     \  (oo)\_______
        (__)\       )\/        ||----w |
            ||     ||

    chmod +x /etc/profile.d/cowsay.sh 赋予执行权限后,开机才能自运行

    1.4 $的作用

$ 0 表示脚本的名字
$ 1 表示第一个参数
$ 2 表示第二个参数
$ n 表示第n个参数
$ # 表示脚本的个数
$ ? 表示上一个命令的返回值,判断上一个命令是否执行正确
1.5 [ ]的作用(条件表达式)

[ -d /root ]用于判断根下是否存在目录/root d表示directory
[ -f /root/oldboy.txt ]用于判断/root下是否存在oldboy.txt文件 f表示file
$ ? 表示上一个命令的返回值,判断上一个命令是否执行正确
0 表示正确 非0表示不正确,命令执行有问题
实例1-2 判断系统中 是否存在 /oldboy/oldboydir目录 如果存在提示 dir exist

[ -d /data ]

echo $?

0

[ -d /oldboy/oldboydir ] && echo "dir exist"

dir exist

[ -f /tmp/ufo.txt ] || touch /tmp/ufo.txt

1.6 比较大小

[ a -eq b ] equal == 表示a=b
[ a -ne b ] not equal != 表示a≠b
[ a -gt b ] great than > 表示a>b
[ a -ge b ] great equal >= 表示a≥b
[ a -lt b ] less than < 表示a<b
[ a -le b ] less equal <= 表示a≤b
1.7 if语句

if语句格式-1:
if [ 设定条件 ];then
执行命令
fi(结束标志)
if语句格式-2:
if [ 设定条件 ];then
执行命令
else
执行其他
fi(结束标志)
1.8 for循环

for循环格式:
for name in 条件命令
do
执行命令
done
1.9 脚本案例演示

1.9.1 利用awk制作简单运算器

利用read/awk/if语句编剧脚本
vim /server/scripts/bc.sh
read -t5 -p "input a b:" a b
if [ $b -eq 0 ];then
echo "b is not allow 0"
exit
fi
awk -va=$a -vb=$b ‘BEGIN{print a+b,a-b,ab,a/b}‘
利用$n/awk/if语句编辑脚本
vim /server/scripts/bc.sh
if [ $# -ne 2 ];then
echo "Usages:you can only write two words"
exit
fi
awk -va=$1 -vb=$2 ‘BEGIN{print a+b"\n"a-b"\n"a
b"\n"a/b}‘
1.9.2 利用for语句关闭无用服务

vim /server/scripts/chk.sh
off=chkconfig |awk ‘!/crond|network|sshd|rsyslog|sysstat/{print $1}‘
for dqf in $off
do
chkconfig $dqf off
done
1.9.3 变量赋值方法

方法1-赋值普通变量——重启失效 普通变量不能在脚本中运行

a=x

echo $a env 查看系统变量

x
方法2-export赋值环境变量——重启失效 环境变量可以在脚本中运行

export a=x

echo $a

x
方法3-read 交互式赋值变量——重启失效

read -t5 -p "input a b:" a b -t5 表示5秒后自动退出

input a b:2 3 -p 表示在屏幕上打印问答内容

echo $a $b -s 表示隐藏输入过程

2 3 写入/etc/profile中才能配置永久变量

以上是关于Shell脚本入门的主要内容,如果未能解决你的问题,请参考以下文章

用于确保在任何给定时间仅运行一个 shell 脚本的 shell 片段 [重复]

Shell编程入门

简单shell脚本入门了解

shell从入门到精通(-1)初次会面运行第一个shell脚本

Shell 脚本是用户使用Linux的桥梁-快速入门

常用python日期日志获取内容循环的代码片段