Shell 脚本编程语法:

注:
文章来源 http://www.cnblogs.com/yunquan/p/6821850.html
视频来源:https://www.bilibili.com/video/av10565321/index_1.html?t=684


这里每个语句都要有空格控制,不然语法错误

1.文件格式

以.sh后缀
在文件里,第一行写环境变量  #!/bin/bash
PATH = /usr/local/sbin:/usr/local/bin:/usr/sbin ....
//保证在其他电脑,也能运行(这里是配置环境)
export PATH
exit 0 (=C语言return 0,可以省略)跳出,不继续向下执行

2.执行sh

1)bash .sh文件
2)./.sh文件
3)source   .sh文件

3.read

read -p(提示字符) "请输入你的名字" name(变量)echo "hello" $name

4.判断式

** test命令:  -e  该【档名】是否【存在】  (exist)?(常用)  -f  该【档名】是否是【档案】(file)?(常用)  -d  该【文件名】是否为【目录】(directory)?(常用)**-r  侦测该档名是否是具有【可读】属性?-w  侦测该档名是否是具有【可写】属性?-x  侦测该档名是否是具有【可执行】属性?-eq 两数相等(equal0)-ne 两数值不相等(not equal)-gt n1 > n2 (greater than)-lt n1 < n2 (less than)-ge n1 >= n2(greater than or equal)-le n1 <= n2(less than or equal)

eg:

    #!/bin/bash  PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/gamesexport PATHread -p "请输入(Y/N):" yn[ "$yn" == "Y" -o "$yn" == "y" ] && echo    "ok,continue" && exit 0[ "$yn" == "N" -o "$yn" == "n" ] && echo "oh,intsdsd" && exit 0echo "我不信这个也能出来" && exit 0

shell scripts的预设变数( $0 $1 $2)

这个理解起来很简单,脚本名称就是 $0 然后第一个参数就是 $1 第二个参数就是 $2 ...以此类推

好,我们来个简单的例子

#!/bin/bashecho "The scripts name is $0" 

$0是第一个参数,下面的 -n 参数是判空,是假的就不执行,是真的执行后面语句,最后exit

[ -n "$1" ] && echo "第一个参数是: $1" || exit 0
[ -n "$2" ] && echo "第二个参数是: $2" || exit 0

5.条件判断式

if ...then

if [];then ......
elif [];then ......
else ......
fi(结束语)
exit 0

eg:

#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
export PATH
read -p "请输入(Y/N):"  yn
if [ "$yn" == "Y" -o "$yn" == "y" ];thenecho "ok,continue"
elif [ "$yn" == "N" -o "$yn" == "n" ];thenecho "oh,intsdsd"
elseecho "我不信这个也能出来"
fi
exit 0  

case ...in ...esac

#!/bin/bash
case $1 in"hello")echo "hello,how are you";;"")echo "你必须输入参数";;*)echo "要输入hello啊";;
esac

function函数

#!/bin/bashfunction h()
{echo "好帅啊 $1"    //function函数也有变量,$1就是函数的参数,这个和脚本的变量不同
}case $1(脚本的第一个参数,从bash外面输入的) in"one")h 1;;"two")h 2;;"three")h 3;;*)echo "只能用123";;esac

LOOP

while do done

#!/bin/bash
read -p "请输入一个数字:" number
i=0
s=0
while [ "$i" -lt  "$number" ]    //这里的小于号是 -lt 注意!
do
i=$(($i+1))              //这里为什么要两个()?因为()有运算的意思
s=$(($s+$i))              //这里i和s这两行不能有空格,否则失败
done
echo -e "'1+2+...+$number' 的结果是: $s "                             

6.shell script 的追踪与debug

    -n  不执行script,仅查询语法问题:
-v  执行script前,先将script 的内容输出到屏幕上
-x  将使用到的script内容显示到屏幕上,这是很有用的参数

转载于:https://www.cnblogs.com/Kernel001/p/7871999.html

Shell 脚本编程 基本语法:相关推荐

  1. linux shell 脚本编程基本语法

    linux shell脚本编程基本语法 Shell script是利用shell的功能所写的一个"程序",这个程序是使用纯文本文件,将一些Linux Shell的语法与命令(含外部 ...

  2. shell脚本编程神器之awk语法案例详解

    AWK入门指南 文章目录 shell脚本编程神器之awk语法案例详解 安装AWK AWK 起步示例 AWK程序的结构 执行 awk 程序 awk 的错误提示 简单输出 打印每一行 打印特定行 NF,字 ...

  3. shell脚本编程for循环求阶乘_shell脚本编程(完结版).pdf

    shell脚本编程(完结版) Shell 脚本编程学习笔记 2013 年 5 月 2 日 追风~忆梦 如有任何疑问,请联系作者,作者 QQ:1028150787,或者到韦东山群共同讨论 1 Shell ...

  4. Linux shell脚本编程(二)

    Linux shell脚本编程(二) -------------------------------------------------------------------- 注:如果你对python ...

  5. Linux shell脚本编程(一)

    -------------------------------------------------------------------- 注:如果你对python感兴趣,我这有个学习Python基地, ...

  6. Shell脚本编程----变量的使用

    接触Linux Shell脚本编程很久了,但是发现每次学完之后就会忘记,这似乎又印证了那句"好记性不如烂笔头"的言语,事实确实如此,坚持写博客,定期回顾,你会感觉很充实. 这是本系 ...

  7. Linux_《Linux命令行与shell脚本编程大全》第十章学习总结

    时间:2017年08月24日星期四 说明:本文部分内容均摘取自书籍<Linux命令行与shell脚本编程大全>,版权归原作者所有.<Linux命令行与shell脚本编程大全>( ...

  8. 如何快速入手 Shell 脚本编程

    Linux Shell 脚本编程之前一直没有系统的去学习,在写 Shell 脚本的时候总需要现查各种语法.本文章以编程语言的维度去系统的学习 Shell 脚本编程. Shell Linux Shell ...

  9. Shell脚本编程与文件系统修复

    导读 Linux基金会发起了LFCS认证(Linux 基金会认证系统管理员)Linux Foundation Certified Sysadmin,这是一个全新的认证体系,旨在让世界各地的人能够参与到 ...

最新文章

  1. VS 默认开发环境如何更改
  2. docker mysql日志写入本地_Docker Compose搭建MySQL主从复制集群
  3. 推荐:腾讯开源的词向量精简版本下载
  4. LoRa 之一 旧版驱动(sx12xxDrivers-V2.1.0)移植及驱动架构详解
  5. 浅析Java的“克隆”方法[zt]
  6. 视频直播点播nginx-rtmp开发手册中文版
  7. python enumerate用法总结_python enumerate用法总结
  8. JavaFX 2.0条形图和散点图(以及JavaFX 2.1 StackedBarCharts)
  9. pca算法介绍及java实现_PCA算法原理及实现
  10. 力扣102. 二叉树的层序遍历(JavaScript)
  11. IPFS矿机托管的优势与劣势
  12. Atitit 在线支付系统功能设计原理与解决方案 与目录
  13. 10分钟掌握运输问题(一)
  14. IOS逆向学习-越狱环境的搭建
  15. Blackhat2017:如何利用PostScript语言入侵打印机
  16. 云监控介绍 - Amazon CloudWatch
  17. C语言之:数组的定义和初始化必备练习题
  18. quartus 13.0 之四位全加器(不需要用modelism的歪门邪道)
  19. java图片去掉文字_java解出图片中的文字
  20. 64g的u盘只有58g_为啥我买的64G U盘实际只有57G?聊聊存储市场的“不足量”现象...

热门文章

  1. Linux crontab定时任务示例
  2. JavaFX控制器:设置按钮点击事件代码示例
  3. jenkins Publish over SSH 的配置与使用
  4. Spring Boot整合Apollo完整示例
  5. python保留关键字列表
  6. Linux 用户管理相关命令
  7. 以太坊智能合约编程之带菜鸟入门教程
  8. mnist等常用数据集下载地址,现成的.mat文件
  9. java+object+graph,graphql-go:使用Object作为查询的输入参数
  10. C/C++基础知识点(二)