我们在Linux下编程,不可避免的会用到shell编程,编写一些简单的shell脚本可以实现很多使用的功能,比如我们微信公众号需要用到的开机tomcat和ngrok自启动,连接服务器可以用到ssh免密连接等等,本想自己写一写shell入门教程,一看网上有大神写的很详细,就直接用网上的了,改成自己喜欢的,并且更加的适合小白入手,今天废话很多,下面上教程.
目录
看着有10条,其实有点C语言编程基础的,五分钟就看完了昂!
正文
在linux系统中,我们一般都是用C语言写服务端程序,但是一般我们不直接启动这个程序,而是通过一个shell脚本启动和关闭(需要设置一些环境变量和防止打开多个该程序,打开多个后需要找到pid才能关闭)
那么shell是什么呢?
说白了shell是操作系统提供给我们的一种语言,用来将用户的命令输送到内核中执行.
1首先我新建一个test2.sh,存放下面的一段shell代码.(用不用.sh后缀都可以,代码中#! /bin/sh可以识别出来)
2保存后,修改这个shell为可执行文件 chmod +x test2.sh 赋予文件可执行权限
#! /bin/sh
#定义变量
name=浩Conding微信公众号
echo $name
echo "所有参数列表:$*"
echo "参数的个数:$#"
输出结果:
其中./test1.sh 参数1 参数2 : ./是运行程序 后面可跟参数
下面分别介绍字段的含义
第一行:一般默认第一行都是上面这段#! /bin/sh,通知系统用/bin/sh来执行下面的程序。
以“#”开头的行代表注释
echo代表输出后面一段话的到用户界面
$name代表使用了name这个变量(定义shell变量在下面介绍)
$* 代表所有的参数(我们在shell命令后面加了参数1 和参数2两个参数)
$#代表参数的个数
有了初步的认识,我们就开始踏入shell编程吧!
定义shell变量:(注意等号左边右边不可以有空格)
shellname=value
使用shell变量
$shellname
2$数字
代表第几个参数
例如$1代表第一个参数,按照上面的代码就是hello
还有下面的一些$符号的使用。
可能会对$?有一点费解,例如我们在shell中调用了一个C语言程序mydemo,其中demo这个主函数会返回100(demo代码:echo 100)
#! /bin/sh./demo
echo "demo的输出参数为:$?"
echo "本程序输入的第二个参数为:$2"
注:$1和${1}一样的
例如./test.sh start stop 则$0为:test.sh ${1}为start
shell输出结果:
可以看到,demo.sh的输出结果为100,但是返回值是0
如果我们想在shell中执行一段命令,并将该命令的值存放到一个变量中,就要用到` `符号(在1数字旁边)
#! /bin/shresult=`ls`echo result=$result
ls命令显示当前文件夹下有哪些文件
输出结果:result=test.sh ...
我们在运行shell的时候,可能需要我们输入一些数据,除了带参数的方式我们还可以使用read进行读
#! /bin/sh
echo "Please input:"
read a
echo "a=$a"
输出结果:
read命令读取一个输入行,直至遇到换行符。
行尾的换行符在读入时将被转换成一个空字符
如果read命令后有变量名,输入内容赋给该变量。
如果read命令后未跟变量名,读入的行将被赋值给内置变量REPLY。
shell也会像高级语言支持if,while等计算
格式:(fi代表这个if结束)
if (test condition) then
commands
else
commands
fi
test是一个固定关键字,用来判断condition的描述是否正确(红色的都是关键字)
#! /bin/sh
if (test "start" = "${1}" ) then
echo "start"
else
echo "end"
fi
= 判断两个参数是否相等 两边要有空格
还有另外的形式:
if
[ ! -d "/data/"
];then -->注意:if空格[空格参数空格];then
mkdir
/data
else
echo
"文件夹已经存在"
fi
以上程序意思:如果输入的第一个参数为"start",则输出"start"
执行结果:
参考文章:
https://www.cnblogs.com/nfcm/p/7743418.html
https://www.cnblogs.com/37yan/p/6962563.html