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,a*b,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中才能配置永久变量

转载于:https://blog.51cto.com/13520758/2059964

Shell脚本入门基础相关推荐

  1. Linux Shell脚本入门教程系列之(十四) Shell Select教程

    本文是Linux Shell脚本系列教程的第(十四)篇,更多Linux Shell教程请看:Linux Shell脚本系列教程 在上一篇文章:Linux Shell系列教程之(十三)Shell分支语句 ...

  2. 详细介绍Linux shell脚本系列基础学习(列表)

    本系列适合Linux初学者,属于Linux入门级教程,主要介绍了Shell的分类.语法格式以及脚本的使用和编写格式等. 不断更新中,是Shell学习的必读经典教程.现主要包含以下文章: Linux S ...

  3. shell脚本的基础知识

    shell脚本的基础知识 1 什么是shell 2 shell脚本的意义 3 如何创建shell脚本 4 如何执行shell脚本 5如何对脚本脚本进行调试 6 脚本练习 1 什么是shell shel ...

  4. Linux Shell脚本入门--wget 命令用法详解

    Linux Shell脚本入门--wget 命令用法详解 wget是在Linux下开发的开放源代码的软件,作者是Hrvoje Niksic,后来被移植到包括Windows在内的各个平台上.它有以下功能 ...

  5. Linux之Shell脚本入门

    一.Shell概述 Shell是一个命令行解释器,它接受应用程序/用户命令,然后调用操作系统内核. Shell还是一个功能强大的编程语言,易编写.易调试.灵活性强. 二.Shell脚本入门 1.脚本格 ...

  6. shell脚本由基础变量及特殊变量($@、$*、$#等)到实战。

    shell脚本由基础变量及特殊变量($@.$*.$#等)到实战. 一.shell脚本建立: shell脚本通常是在编辑器(如vi/vim)中编写,也可以在命令行中直接执行: 1.脚本开头:     规 ...

  7. linux基础—课堂随笔_03 SHELL脚本编程基础

    shell脚本编程基础 条件选择:if语句 选择执行: 注意:if语句可嵌套 单分支 if(开头)判断条件:then 条件为真的分支代码  fi(结尾) 双分支 if(开头)判断条件:then 条件为 ...

  8. Linux Shell脚本入门教程系列之(十六) Shell输入输出重定向

    本文是Linux Shell系列教程的第(十六)篇,更多Linux Shell教程请看:Linux Shell系列教程 Shell中的输出和输入的重定向是在使用中经常用到的一个功能,非常实用,今天就为 ...

  9. Linux Shell脚本入门教程系列之(十五) Shell函数简介

    本文是Linux Shell脚本系列教程的第(十五)篇,更多Linux Shell教程请看:Linux Shell脚本系列教程 上一篇之后,函数可以将一个复杂功能划分成若干模块,从而使程序结构更加清晰 ...

最新文章

  1. Linux程序映像的布局
  2. SAP MM/FI 自动过账实现 OBYC 接口执行
  3. EBB-4、忘记root密码;文件,目录权限
  4. 区块链技术的发展现状_区块链的现状及其发展趋势
  5. 平民价国产Android,1600左右的Broncho A1真机配置
  6. arcgis运行慢_ArcGIS Pro运行较慢的诊断方法
  7. Java安装环境变量配置-day1
  8. xy苹果助手未受信任_【iOS教程】不用电脑 安装苹果软件
  9. 计算机网络简历自我认识,计算机网络专业简历的自我评价
  10. 利用倾斜摄影技术土方工程计算
  11. CRAFTS:端对端的场景文本检测器
  12. UI设计:使用AI绘制微质感图标
  13. win10怎么把锁屏界面变成壁纸
  14. @开发者,微软 CEO 萨提亚带领 60 位大咖的集结令,你敢接吗?
  15. 【matplotlib】绘制简单二维、三维图像
  16. ofdm 迭代限幅 matlab,ofdm限幅法matlab的程序
  17. 四个小诀窍 告诉你雪景怎么拍才能更好看
  18. Github | 如何在Github上只下载一个文件或文件夹!?
  19. 迈普2800路由器设置trunk
  20. win7升级正版win10方法(精华篇)!

热门文章

  1. Angular中使用axios实现get请求数据
  2. 史上最全Winform中使用ZedGraph教程与资源汇总整理(附资源下载)
  3. DataTbles中设置所有列不进行排序使用ording等不管用的解决方案
  4. 怎样在vue单页面中引入其他组件
  5. Elasticsearch 入门教程
  6. 河南acret计算机报名,Acret, Ex Parte U.S. Supreme Court Transcript of Record with Supporting Pleadings...
  7. php+mssql 分页,一个PHP+MSSQL分页的例子
  8. 三大数据驱动机制,助力文娱企业打造高留存、高转化增长闭环
  9. 我为什么突然想转管理?
  10. Citrix XenServer XenCenter 警报