一、第一个shell脚本

[root@www ~]# cat hello.sh

#!/bin/bash

##The first shell script

##2014-11-03

echo "Hello World,welcome you"

echo `date +%Y-%m-%d`

echo `date +%H:%M:%S`

执行这个脚本的方法

[root@www ~]#sh hello.sh              //直接sh 后面加脚本名称

Hello World,welcome you

2014-11-03

09:58:24

[root@www ~]#./hello.sh

-bash: ./hello.sh: 权限不够

[root@www ~]# chmod +x hello.sh    //加可执行权限 ./为当前目录

[root@www ~]# ./hello.sh

Hello World,welcome you

2014-11-03

10:01:25

******************************************************************************

二、第二个shell脚本

[root@www ~]# cat sum.sh            //这个脚本是一个普通的求和

#!/bin/bash

a=3

b=4

sum=$[$a+$b]

echo "两个数相加是 $a+$b=$sum "

[root@www ~]# sh sum.sh

两个数相加是 3+4=7

******************************************************************************

三、第三个脚本

[root@www ~]# cat date.sh      //打印出系统当前时间,sleep是系统命令挂起一段时间的意思

#!/bin/bash

#This a date script

#huqiang

#2014-11-3

j=`date +%H:%M:%S`

echo "现在的时间是: $j."

sleep 2

d=`date +%H:%M:%S`

echo "停留两秒后的时间是:$d."

[root@www ~]# sh date.sh

现在的时间是: 10:06:26.

停留两秒后的时间是:10:06:28.

******************************************************************************

四、第四个shell脚本

[root@www ~]# cat start.sh

#!/bin/bash

n=$[$1+$2]

echo "$1+$2=$n"

echo "$1 $2 $0"

[root@www ~]# sh start.sh 4 5

4+5=9

4 5 start.sh

这种一般用在启动服务时后面跟的命令/etc/init.d/mysqld start   $1 $2都是系统预设的  $0则是打开这个命令本身

******************************************************************************

五、第五个shell脚本

[root@www ~]# cat read.sh

#!/bin/bash

read -p "请输入一个数字 > " x

read -p "再输入一个数 > " y

sum=$[$x+$y]

echo "这两个数的和是: $sum"

[root@www ~]# sh read.sh

请输入一个数字 > 80

再输入一个数 > 80

这两个数的和是: 160

read命令用于和用户进行交互

******************************************************************************

六、第六个shell脚本

[root@www ~]# cat if.sh

#!/bin/bash

read -p "Please input your score: " a

if ((a<60)); then

echo "You didn't pass the exam."

fi

[root@www ~]# sh if.sh

Please input your score: 45

You didn't pass the exam.

我们在写脚本时学用到if逻辑判断语句来减少我们的工作量,这个脚本意思是当a<60,打印出你的成绩说不及格,如果输入一个大于60的数则不会出结果

if函数的格式是:if  条件; then

echo 满足则输出

fi

[root@www ~]# cat if1.sh

#!/bin/bash

read -p "输入你的成绩:" x

if (( x<60)); then

echo "差了点,继续努力"

else

echo "恭喜,及格了"

fi

[root@www ~]# sh if1.sh

输入你的成绩:70

恭喜,及格了

[root@www ~]# sh if.sh

输入你的成绩:50

差了点,继续努力

这里加了一个else 意思是如果你不满足上面一个条件则输出下面这个结果

if函数的格式是:if  条件; then

echo 满足则输出

else  不满足上面的条件则输出

fi

[root@www ~]# cat if2.sh

#!/bin/bash

read -p "输入你的成绩:" x

if ((x<60)); then

echo "差了点,继续努力"

elif ((x>=60)) && ((x<85)); then

echo "及格了"

else

echo "非常棒"

fi

[root@www ~]# sh if2.sh

输入你的成绩:70

及格了

[root@www ~]# sh if2.sh

输入你的成绩:59

差了点,继续努力

[root@www ~]# sh if2.sh

输入你的成绩:90

非常棒

这里加了一个elif 意思是多了一个if判断,如果你不满足第一个条件则继续执行第二个判断,如果还不满足则输出最后一个结果

if函数的格式是:if  条件; then

echo 满足则输出

elif 条件2 ( && ||  )并且与或者的意思  ; then

echo 不满足第一个条件则输出

else  不满足上面两个条件则输出

fi

以上只是简单的介绍了if语句的结构。在判断数值大小除了可以用 (( )) 的形式外,还可以使用 [ ] 但是就不能使用>, < , = 这样的符号了,要使用 -lt (小于),-gt (大于),-le (小于等于),-ge (大于等于),-eq (等于),-ne (不等于)

[root@www ~]# cat if3.sh

#!/bin/bash

read -p "输入你的成绩 " y

if [ $y -lt 60 ]; then

echo "no pass"

elif [ $y -ge 60 ] && [ $y -lt 80 ]; then

echo "pass"

else

echo "exce"

fi

[root@www ~]# sh if3.sh

输入你的成绩 45

no pass

[root@www ~]# sh if3.sh

输入你的成绩 70

pass

[root@www ~]# sh if3.sh

输入你的成绩 90

exce

要注意的是空格

*************************************************************************

shell 脚本中if还经常判断关于档案属性,比如判断是普通文件还是目录,判断文件是否有读写执行权限等。常用的也就几个选项:

-e :判断文件或目录是否存在

-d :判断是不是目录,并是否存在

-f :判断是否是普通文件,并存在

-r :判断文档是否有读权限

-w :判断是否有写权限

-x :判断是否可执行

使用if判断时,具体格式为:

if [ -e filename ] ; then

-e参数

[root@www ~]# cat e.sh

#!/bin/bash

if [ -e /root/a ]; then

echo "The existence of"

else

echo "no exist"

fi

[root@www ~]# sh e.sh

no exist

[root@www ~]# mkdir a

[root@www ~]# sh e.sh

The existence of

-f参数

[root@www ~]# cat f.sh

#!/bin/bash

if [ -f /root/f ]; then

echo "存在且是普通文件"

else

echo "不存在这个文件"

fi

[root@www ~]# sh f.sh

不存在这个文件

[root@www ~]# touch f

[root@www ~]# sh f.sh

存在且是普通文件

-x参数

[root@www ~]# cat x.sh

#!/bin/bash

if [ -x file ]; then

echo "可执行文件"

else

echo "不可执行文件"

fi

[root@www ~]# touch file

[root@www ~]# sh x.sh

不可执行文件

[root@www ~]# chmod +x /root/file

[root@www ~]# sh x.sh

可执行文件

加-参数后需要首先满足对的这个条件,然后才能else不对的这个条件

if的用户首先要满足前面一个条件是对的,后面才能继续跟下一个对的条件

在shell 脚本中,除了用if来判断逻辑外,还有一种常用的方式,那就是case了。具体格式为:

case  变量  in
value1)command;;
value2)command;;
value3)command;;
*)command;;
esac

上面的结构中,不限制value的个数, * 则代表除了上面的value外的其他值。

[root@www ~]# cat case.sh

#!/bin/bash

read -p "输入一个数: " n

a=$[$n%2]

case $a in

1)

echo "这是一个奇数"

;;

0)

echo "这是一个偶数"

;;

*)

echo "这不是一个数"

;;

esac

[root@www ~]# sh case.sh

输入一个数: 3

这是一个奇数

[root@www ~]# sh case.sh

输入一个数: 100

这是一个偶数

[root@www ~]# sh case.sh

输入一个数: -8

这是一个偶数

[root@www ~]# sh case.sh

输入一个数: -1

这不是一个数

case脚本常用于编写系统服务的启动脚本,例如/etc/init.d/iptables中就用到了

转载于:https://blog.51cto.com/shansongxian/1571141

shell 脚本初习相关推荐

  1. shell脚本报错:[: =: unary operator expected

    shell脚本报错:"[:=:unaryoperatorexpected" 在匹配字符串相等时,我用了类似这样的语句: if [ $STATUS == "OK" ...

  2. ubuntu终端执行shell脚本报command not found解决方法

    ubuntu终端执行shell脚本报command not found解决方法 参考文章: (1)ubuntu终端执行shell脚本报command not found解决方法 (2)https:// ...

  3. 通过shell脚本来rerun一个oozie调度失败的job,从而可以跳过执行失败的节点

    标题很长:通过shell脚本来rerun一个oozie调度失败的job,从而可以跳过执行失败的节点 不过目前从oozie调度测试的例子来看,oozie本身的retry好像并没有参数可以控制跳过失败的节 ...

  4. linux 简单脚本fi报错,shell脚本报错:[: =: unary operator expected

    shell脚本报错:"[: =: unary operator expected" 在匹配字符串相等时,我用了类似这样的语句: if [ $STATUS == "OK&q ...

  5. 运行shell脚本报错:“syntax error near unexpected token 的解决方法”

    运行shell脚本报错:"syntax error near unexpected token 的解决方法" 今天写了个Cshell脚本,运行报错syntax error near ...

  6. 免费学python的软件-此贴告诉你:为啥shell脚本人,不建议学python

    ------[1在linux安装powershell,并不是难题]------ 无需编译,一键安装powershell: centos7及以上,安装powershell: curl -o /etc/y ...

  7. Linux shell 脚本报错:/bin/bash^M: bad interpreter: No such file or directory

    今天遇到一个很诡异的问题,一直运行很正常的shell脚本失败了,只是昨天增加了一个参数而已. 报错信息: /bin/bash^M: bad interpreter: No such file or d ...

  8. [Shell 脚本] 备份数据库文件至OSS服务(纯shell脚本无sdk)

    背景: 凡事使用服务器搭建的网站就需要定时备份网站数据,常见的方法是打包网站目录,然后备份到FTP服务器上等.也有通过OSS SDK把备份的网站文件上传到OSS服务器上,但是通过SDK来实现,需要一定 ...

  9. CRLF line terminators导致shell脚本报错:command not found

    Linux和Windows文本文件的行结束标志不同.在Linux中,文本文 件用"/n"表示回车换行,而Windows用"/r/n"表示回车换行.有时候在Win ...

最新文章

  1. ajax使用教程_AJAX教程:什么是AJAX以及如何使用它
  2. C#中适当的列表支持
  3. 完美的xslt数值函数与字符串函数
  4. Shell编程之条件判断
  5. 稳定币usda是哪个发行的_usdt稳定币是谁发行的?
  6. vim 快捷键大全和插件大全
  7. MATLAB学习笔记 imagesc函数使用
  8. Nvivo的使用学习
  9. 二维绕任意点旋转_旋转变换(一)旋转矩阵
  10. 结构化、半结构化、非结构化数据
  11. Xilinx FPGA时钟及I/O接口规划(二)
  12. vue判断当前浏览器为IE低版本,给出升级提示;IE11及其他浏览器正常使用
  13. 关于qqv8.8.17版如何关闭QQ看点
  14. 印光法师:《灵岩遗旨》壹、悲化有情
  15. 音乐对计算机专业的影响,计算机网络技术对音乐发展的影响探讨
  16. JS 键盘事件、触摸事件
  17. 计算机图形学复习(自用)
  18. 用java的事件监听机制实现一个简单的画板应用:通过选择图形按钮和颜色按钮来画出自己想画的图形:直线、空心矩形、圆形、折线、多边形、圆角矩形、弧线、曲线、喷枪
  19. 电信“我的e家”手机无线上网
  20. 监控与性能分析系列:2)netstat、ss对比使用

热门文章

  1. 无人车企哪家强?通用第一Waymo第二,苹果特斯拉进黑榜
  2. 在硅谷谈AI不够有创意,到苹果开吐槽大会 | 跟着李开复去硅谷
  3. 谷歌再推AI开源平台AI·ON,你有机会参与Bengio的项目了
  4. 联想高校AI精英挑战赛再下一城,10项目逐鹿华中科大,智能大数据平台夺冠
  5. java中53个关键字的意义及使用方法
  6. tomcat 之 tomcat实例配置
  7. YUV格式文件转RGB格式
  8. android apk 防止反编译技术加壳技术(转)
  9. SharePoint 2013 对二进制大型对象(BLOB)进行爬网
  10. Kubernetes Node Controller源码分析之配置篇