一、概述
Shell 是一个命令解释器,用户可以用shell来启动、挂起、停止甚至是编写一些程序(也是一个编程语言)。
这个交互界面就是Shell:
terminal是输入命令和显示输出的那个窗口,shell是窗口背后在解释你输入的程序。
你在 windows上面打开的cmd和powershell都是窗口,但cmd默认解释输入的命令的方式是cmd,powershell则是powershell,Linux和mac上的terminal打开以后默认用的是shell,有些默认用的是cshell,有些用的是bash,这两个都是shell。
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
shell其实就是Linux里的一个翻译官,负责把命令翻译成二进制机器语言数字。
内核拥有最高级别、最底层的权限,在接受到shell命令以后可以直接控制硬件。
二、shell脚本执行方式
2.1编写第一个脚本
"hello.sh" [New] 5L, 71C written #先创建sh文件夹,在里面写代码: [root@localhost ~]# mkdir sh [root@localhost ~]# ls anaconda-ks.cfg fengjie Japan sh 模板 下载 cangjin hello.sh Japanlovestory.list yangmi 视频 音乐 cangjinwq install.log linghu zhengyi 图片 桌面 changjin install.log.syslog nvshen 公共的 文档 [root@localhost ~]# cd sh/ ##写脚本代码hello.sh [root@localhost sh]# vi hello.sh ##第一行是声明这个是shell脚本,指定解析器,必须有 #!/bin/bash #the first program #author:linghu echo -e "Hello world!" ~ ~ ~ ~ ~ "hello.sh" 6L, 72C written [root@localhost sh]# chmod 755 hello.sh [root@localhost sh]# ll 总用量 4 -rwxr-xr-x. 1 root root 72 4月 22 16:13 hello.sh [root@localhost sh]# ls hello.sh ##通过绝对路径执行shell脚本 [root@localhost sh]# /root/sh/hello.sh Hello world! [root@localhost sh]# ##通过bash+脚本文件执行命令 [root@localhost sh]# bash hello.sh Hello world! [root@localhost sh]# [root@localhost sh]#
用shell脚本写的一个俄罗斯方块游戏:game.sh:
2.2多命令操作案例
需求:
##先把目录创建好: [root@localhost sh]# cd [root@localhost ~]# cd /home [root@localhost home]# mkdir atguigu ##开始写脚本代码: [root@localhost ~]# cd sh [root@localhost sh]# touch batch.sh [root@localhost sh]# vim batch.sh #!/bin/bash cd /home/atguigu/ touch banzhang.txt echo "I love cls" >> banzhang.txt ~ ~ ~ "batch.sh" 7L, 86C 已写入 [root@localhost sh]# bash batch.sh ##执行完毕开始查看验证脚本是否执行成功: [root@localhost ~]# cd sh [root@localhost sh]# bash batch.sh [root@localhost sh]# cd /home/atguigu [root@localhost atguigu]# ls banzhang.txt [root@localhost atguigu]# vi banzhang.txt I love cls ~
三、Shell中的变量
Shell变量分为:
- 系统变量
方便写复杂脚本的时候直接引用这些变量! - 自定义变量
[root@localhost ~]# A=1 [root@localhost ~]# echo $A 1 [root@localhost ~]#
- 撤销变量:
[root@localhost ~]# A=1 [root@localhost ~]# echo $A 1 ##撤销用unset [root@localhost ~]# unset A [root@localhost ~]# encho $A bash: encho: command not found [root@localhost ~]#
- 声明静态变量以后,变量不能unset:
##声明静态变量用readonly: [root@localhost ~]# readonly B=3 [root@localhost ~]# echo $B 3 [root@localhost ~]# unset $B bash: unset: `3': not a valid identifier [root@localhost ~]# [root@localhost ~]# d="i love you" [root@localhost ~]# echo $d i love you [root@localhost ~]#
3.1特殊变量:
用于接收shell脚本文件执行时传入的参数:$n
[root@localhost sh]# bash parameter.sh [root@localhost sh]# vi parameter.sh #!/bin/bash echo $0 echo "输入的第一个参数:$1" echo "输入的第二个参数:$2" echo "输入的第11个参数:${11}" ~ ~ ~ ~ "parameter.sh" 7L, 135C written [root@localhost sh]# bash parameter.sh [root@localhost sh]# bash parameter.sh 10 20 30 40 50 60 70 80 90 10 22 parameter.sh 输入的第一个参数:10 输入的第二个参数:20 输入的第11个参数:22
Shell编程(下)+https://developer.aliyun.com/article/1623582