从零开始写shell脚本
https://blog.csdn.net/wizard_wsq/article/details/51154353?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_title~default-1.queryctrv2&spm=1001.2101.3001.4242.2&utm_relevant_index=4
初识shell
计算机智能理解 0 和 1 组成的二进制语言。
早期计算机通过二进制语言来执行指令,对人类来说难以理解,读写都很不友好。后来,操作系统里提供了一种叫做shell的特殊的程序。shell接受你的英文格式(大多数情况下是英文)指令,如果指令有效,就会被传递给内核。
实际上,shell是一个提供给用户用来交互的软件,通过从标准输入设备(通常是键盘)或者文件读取指令,并且解释执行你的指令。
shell并不是内核的一部分,却通过系统调用来执行程序,比如创建文件等等。
Linux中包含各种不同版本的shell
Shell Name Developed by Where Remark
BASH(Bourne-Again Shell) Brian Fox and Chet Ramey Free Software Foundation Linux下最通用的shell
CSH (C Shell) Bill Joy University of California(For BSD 语法和用法都和C语言极为相似
KSH (Korn Shell) David Korn AT&T Bell Labs
TCSH William Joy TCSH是CSH的加强版本
输入下面的指令可以查看你的系统支持的shell:
$ cat /etc/shells
输入下面的指令可以查看当前正在使用的shell:
$ echo $SHELL
shell脚本
shell通常都是一些交互指令,你通过键盘输入指令,shell执行并且返回结果。当有大量命令需要执行时,一条一条交互就显得太没有效率,这时候就可以把这些指令存入文本文件,并且可以添加控制语句,像程序流程那样控制指令的运行。这就是shell script。
shell脚本类似于Windows下的批处理,但是比批处理强大的多。
如何写一个shell脚本
首先根据以下步骤我们来写一个shell脚本:
1. 使用编辑器,可以是vi, vim,emacs,当然也可以是gedit , sublime这一类的软件
2. 编辑好你的shell 脚本后,为你的脚本添加可执行权限:
语法格式:chmod 权限 脚本名称
例:
$ chmod +x your-script-name
$ chmod 755 your-script-name
1
2
Note: 755意味着user拥有读写执行的权限,group和other只拥有读和执行权限,更多有关的知识可查看Linux文件权限。
3. 执行shell脚本
语法格式:
bash your-script-name
sh your-script-name
./your-script-name
1
2
3
一般大家都是用 ./your-script-name 来执行, . 意味着当前文件夹内,但是如果仅仅使用 . your-acript-name ,shell不会另起一个进程执行你的命令,意味着执行完你的脚本后,shell就会退出,你可以在你的机器上试一下。
好吧,让我们开始写一个shell脚本吧!
使用vim新建一个脚本vim fisrt.sh, 内容如下:
#
# My fisrt shell script
#
clear
echo "Hello,shell!"
1
2
3
4
5
6
执行 ./fisrt.sh ,很明显无法运行。添加执行权限:
$ chmod 755 fisrt.sh
$ ./fisrt.sh
1
2
脚本命令 含义
My fisrt shell script 在shell脚本里面起到注释的作用,单行注释
clear 清屏命令
echo “Hello,shell!” 向屏幕输出内容
下面写个更复杂的吧,vim ginfo:
#
#
# Script to print user information who currently login , current date & time
#
clear
echo "Hello $USER"
echo -e "Today is \c ";date
echo -e "Number of user login : \c" ; who | wc -l
echo "Calendar"
cal
exit 0
1
2
3
4
5
6
7
8
9
10
11
添加可执行权限后,./ginfo输出如图:
上面这段脚本输出当前用户,打印当前时间,输出日历信息。
这一节到此结束。
下一节将会补充 $USER ,echo -e , who |wc -l 的知识。
————————————————
版权声明:本文为CSDN博主「卡巴拉的树」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wizard_wsq/article/details/51154353

浙公网安备 33010602011771号