为了让自己的程序能在系统启动时运行,决定写一个shell脚本,现学习linux下的shell编程。
最简单的使用例子:
在命令行下使用$bash var.sh 或者 使用chmod +x var.sh为脚本文件赋予可执行的权限,即可输出:
$myVar: Hello World!
从样例程序可以看出
变量的声明直接使用非关键字就行,使用“=”进行赋值,使用字符串用引用“”弱引用字符,这样避免被空白字符分开。
‘’单引号的作用是直接显示单引号的内容为强引用字符,尽管使用的了取变量值的"$"符号。
$myVar取变量名的值。
使用echo显示输出。
#
!
/
bin
/
bash
#fun.sh
########################
###
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
function getParm
{
if [ "$1" = "start" ];
then
echo -e "you want to start the server!"
#start it
elif [ "$1" = "stop" ];
then
echo -e "you want to stop the server!"
#pkill it
elif [ "$1" = "restart" ];
then
echo -e "you want to restart the server!"
#pkill it
#start it
else
echo -e "Usage: $0 start | stop | restart"
fi
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
getParm
"
$1
"
echo
-
e
"
getParm $# parms: $*
"
结果输出如下:
$bash fun.sh start
$ you want to start the server!
$getParm 1 parms: start
代码fun.sh,学习函数使用以及控制语句:
function 的定义如代码所示。
得到运行时的参数可以使用$加数字,参数下标从0开始,$0为运行的程序名,类似c语言中的argv[0]
同时还有几个技巧:
1.$*将所有的参数放在一起组成一个字符串(如果传入的参数为var.sh start my server,则显示传入的参数为getParm "$*"则将start my server 作为1个参数使用)
2.$@则相反,每个参数以空的字符分开
3.$#表示传递参数的个数
if elif else 使用如代码所示,注意的地方为if[ 条件 ],左括号后与右括号前必须有空格隔开。
判断字符中的相等用 “=”,不相等为“!=”,以及">" "<"
这样就可以实现一个自己使用参数来控制自己的服务运行还是停止以及重新启动。
还有一些文件测试的操作符的使用如-d file file并且是一个目录存在返回真, -w -r -x file等即为对file文件的写权限,读权限,执行权限测试。
最简单的使用例子:
#
!
/
bin
/
bash
#var.sh
#################
myVar = " Hello World! "
echo ' $myVar: ' $myVar
#var.sh
#################
myVar = " Hello World! "
echo ' $myVar: ' $myVar
在命令行下使用$bash var.sh 或者 使用chmod +x var.sh为脚本文件赋予可执行的权限,即可输出:
$myVar: Hello World!
从样例程序可以看出
变量的声明直接使用非关键字就行,使用“=”进行赋值,使用字符串用引用“”弱引用字符,这样避免被空白字符分开。
‘’单引号的作用是直接显示单引号的内容为强引用字符,尽管使用的了取变量值的"$"符号。
$myVar取变量名的值。
使用echo显示输出。
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/0196c3df5ea9e936f21e9932cca91014.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
结果输出如下:
$bash fun.sh start
$ you want to start the server!
$getParm 1 parms: start
代码fun.sh,学习函数使用以及控制语句:
function 的定义如代码所示。
得到运行时的参数可以使用$加数字,参数下标从0开始,$0为运行的程序名,类似c语言中的argv[0]
同时还有几个技巧:
1.$*将所有的参数放在一起组成一个字符串(如果传入的参数为var.sh start my server,则显示传入的参数为getParm "$*"则将start my server 作为1个参数使用)
2.$@则相反,每个参数以空的字符分开
3.$#表示传递参数的个数
if elif else 使用如代码所示,注意的地方为if[ 条件 ],左括号后与右括号前必须有空格隔开。
判断字符中的相等用 “=”,不相等为“!=”,以及">" "<"
这样就可以实现一个自己使用参数来控制自己的服务运行还是停止以及重新启动。
还有一些文件测试的操作符的使用如-d file file并且是一个目录存在返回真, -w -r -x file等即为对file文件的写权限,读权限,执行权限测试。