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/games
export PATH
read -p "请输入(Y/N):" yn
[ "$yn" == "Y" -o "$yn" == "y" ] && echo "ok,continue" && exit 0
[ "$yn" == "N" -o "$yn" == "n" ] && echo "oh,intsdsd" && exit 0
echo "我不信这个也能出来" && exit 0
shell scripts的预设变数( $0 $1 $2)
这个理解起来很简单,脚本名称就是 $0 然后第一个参数就是 $1 第二个参数就是 $2 ...以此类推
好,我们来个简单的例子
#!/bin/bash
echo "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" ];then
echo "ok,continue"
elif [ "$yn" == "N" -o "$yn" == "n" ];then
echo "oh,intsdsd"
else
echo "我不信这个也能出来"
fi
exit 0
case ...in ...esac
#!/bin/bash
case $1 in
"hello")
echo "hello,how are you"
;;
"")
echo "你必须输入参数"
;;
*)
echo "要输入hello啊"
;;
esac
function函数
#!/bin/bash
function 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内容显示到屏幕上,这是很有用的参数
Shell 脚本编程 基本语法:的更多相关文章
- Linux shell脚本编程(二)
Linux shell脚本编程(二) 练习:求100以内所有偶数之和; 使用至少三种方法实现; 示例1: #!/bin/bash # declare -i sum=0 #声明一个变量求和,初始值为0 ...
- Linux shell脚本编程(一)
Linux shell脚本编程: 守护进程,服务进程:启动?开机时自动启动: 交互式进程:shell应用程序 广义:GUI,CLI GUI: CLI: 词法分析:命令,选项,参数 内建命令: 外部命令 ...
- 【Linux】Shell脚本编程(一)
Linux shell脚本编程: 守护进程,服务进程:启动?开机时自动启动: 交互式进程:shell应用程序 广义:GUI,CLI GUI: CLI: 词法分析:命令,选项,参数 内建命令: 外部命令 ...
- Shell脚本编程总结及速查手册
Shell是一种编程语言, 它像其它编程语言如: C, Java, Python等一样也有变量/函数/运算符/if语句/循环控制/… 但在开始之前, 我想先理清Shell语言与Shell之间的关系. ...
- Shell脚本编程具体解释
第12章 Shell脚本编程 l Shell命令行的执行 l 编写.改动权限和运行Shell程序的步骤 l 在Shell程序中使用參数和变量 l 表达式比較.循环结构语句和条件结构语句 l ...
- [转载]关于shell脚本的基本语法
关于shell脚本的基本语法 整理于:2014-03-31,何俭飞,mymladdr@sina.com 一.执行 1.shell脚本如果要被执行,一般地必须要有执行权限"x"(除了 ...
- shell脚本编程基础
最近学习了shell脚本编程,感觉自己的脚本写的不太好,所以想把shell脚本相关的知识系统的整理一下,便于以后的学习和使用. 一.shell脚本基础 shell脚本是利用shell的功能 ...
- Shell脚本编程学习入门 02
Shell脚本编程学习入门是本文要介绍的内容,我们可以使用任意一种文字编辑器,比如gedit.kedit.emacs.vi等来编写shell脚本,它必须以如下行开始(必须放在文件的第一行): #! ...
- Shell脚本编程学习入门 01
从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁.用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操 ...
随机推荐
- Centos 7 Apache编译安装
1.安装apache ./configure --prefix=/usr/local/apache2 --enable-rewrite --enable-so --enable-headers --e ...
- 【二】注入框架RoboGuice使用:(Your First View Injection)
上一篇我们简单的介绍了一下RoboGuice的使用([一]注入框架RoboGuice使用:(A brief example of what RoboGuice does)),今天我们我看下View的注 ...
- 利用rman自己主动备份转储spfile
利用rman自己主动备份转储spfile [情景简单介绍] 生产环境丢失了server的參数文件,rman已开启自己主动备份设置. [操作过程简述] ----启动rman $rman target / ...
- Android Studio底边栏选项不见了,怎样调出来
Android Studio底边有一个选项栏,包括了Run,Android等等非常多的选项,可是假设你一不小心不知道自己点到哪个地方了.底边选项栏不见了,怎样调出来.非常easy.例如以下图.地边栏不 ...
- js的类库
prototype.js https://github.com/sstephenson/prototype moment js https://github.com/moment/moment thr ...
- YTU 2732:3798-Abs Problem
2732: 3798-Abs Problem 时间限制: 1 Sec 内存限制: 128 MB Special Judge 提交: 167 解决: 60 题目描述 Alice and Bob i ...
- ajax接收处理json格式数据
ajax在前后端的交互中应用非常广泛,通过请求后台接口接收处理json格式数据展现在前端页面. 下面我们来简单用 ajax在本地做一个接收并处理json的小例子 首先我们要新建一个叫做data的jso ...
- PCB InCAM 获取 JOB STEP 实现外挂脚本调试功能实现
PCB CAM自动化基于Incam 打造,在测试时经常遇到调试障碍,每次自行对功能测试时,生成了exe脚本后,再到Incam里面运行,发现问题,再回来修改代码,非常不爽, 参考Genesis调试运行模 ...
- [Luogu 1052] noip 05 过河
[Luogu 1052] noip 05 过河 题目描述 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧.在桥上有一些石子,青蛙很讨厌踩在这些石子上.由于桥的长度和青蛙一次跳过的距离都是 ...
- 【IOS网络编程】socket编程 - Asyncsocket
Phone的标准推荐是CFNetwork 库编程,其封装好的开源库是 cocoa AsyncSocket库,用它来简化CFNetwork的调用,它提供了异步操作 主要特性有: 队列的非阻塞的读和写,而 ...