Shell 脚本编程 基本语法:
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 脚本编程 基本语法:相关推荐
- linux shell 脚本编程基本语法
linux shell脚本编程基本语法 Shell script是利用shell的功能所写的一个"程序",这个程序是使用纯文本文件,将一些Linux Shell的语法与命令(含外部 ...
- shell脚本编程神器之awk语法案例详解
AWK入门指南 文章目录 shell脚本编程神器之awk语法案例详解 安装AWK AWK 起步示例 AWK程序的结构 执行 awk 程序 awk 的错误提示 简单输出 打印每一行 打印特定行 NF,字 ...
- shell脚本编程for循环求阶乘_shell脚本编程(完结版).pdf
shell脚本编程(完结版) Shell 脚本编程学习笔记 2013 年 5 月 2 日 追风~忆梦 如有任何疑问,请联系作者,作者 QQ:1028150787,或者到韦东山群共同讨论 1 Shell ...
- Linux shell脚本编程(二)
Linux shell脚本编程(二) -------------------------------------------------------------------- 注:如果你对python ...
- Linux shell脚本编程(一)
-------------------------------------------------------------------- 注:如果你对python感兴趣,我这有个学习Python基地, ...
- Shell脚本编程----变量的使用
接触Linux Shell脚本编程很久了,但是发现每次学完之后就会忘记,这似乎又印证了那句"好记性不如烂笔头"的言语,事实确实如此,坚持写博客,定期回顾,你会感觉很充实. 这是本系 ...
- Linux_《Linux命令行与shell脚本编程大全》第十章学习总结
时间:2017年08月24日星期四 说明:本文部分内容均摘取自书籍<Linux命令行与shell脚本编程大全>,版权归原作者所有.<Linux命令行与shell脚本编程大全>( ...
- 如何快速入手 Shell 脚本编程
Linux Shell 脚本编程之前一直没有系统的去学习,在写 Shell 脚本的时候总需要现查各种语法.本文章以编程语言的维度去系统的学习 Shell 脚本编程. Shell Linux Shell ...
- Shell脚本编程与文件系统修复
导读 Linux基金会发起了LFCS认证(Linux 基金会认证系统管理员)Linux Foundation Certified Sysadmin,这是一个全新的认证体系,旨在让世界各地的人能够参与到 ...
最新文章
- VS 默认开发环境如何更改
- docker mysql日志写入本地_Docker Compose搭建MySQL主从复制集群
- 推荐:腾讯开源的词向量精简版本下载
- LoRa 之一 旧版驱动(sx12xxDrivers-V2.1.0)移植及驱动架构详解
- 浅析Java的“克隆”方法[zt]
- 视频直播点播nginx-rtmp开发手册中文版
- python enumerate用法总结_python enumerate用法总结
- JavaFX 2.0条形图和散点图(以及JavaFX 2.1 StackedBarCharts)
- pca算法介绍及java实现_PCA算法原理及实现
- 力扣102. 二叉树的层序遍历(JavaScript)
- IPFS矿机托管的优势与劣势
- Atitit 在线支付系统功能设计原理与解决方案 与目录
- 10分钟掌握运输问题(一)
- IOS逆向学习-越狱环境的搭建
- Blackhat2017:如何利用PostScript语言入侵打印机
- 云监控介绍 - Amazon CloudWatch
- C语言之:数组的定义和初始化必备练习题
- quartus 13.0 之四位全加器(不需要用modelism的歪门邪道)
- java图片去掉文字_java解出图片中的文字
- 64g的u盘只有58g_为啥我买的64G U盘实际只有57G?聊聊存储市场的“不足量”现象...