shell是什么
根绝维基百科的定义。shell,一种壳层与命令行界面,是UNIX操作系统下传统的用户和计算机的交互界面,用户直接输入命令来执行各种各样的任务。Shell脚本(英语:Shell script),又称Shell命令稿、程序化脚本,是一种电脑程序使用的文本文件,内容由一连串的shell命令组成,经由Unix Shell直译其内容后运作。被当成是一种脚本语言来设计,其运作方式与解释型语言相当,由Unix shell扮演命令行解释器的角色,在读取shell脚本之后,依序运行其中的shell命令,之后输出结果。利用shell脚本可以进行系统管理,文件操作等。
学习shell有什么用
学习shell是为了自动化,而自动化则是为了提高工作效率,提高产出,更进一步则是提高公司的收入 。
了解了上面两点就让我们开始进入到shell的学习环阶:
- 第一个shell脚本
就像学习其他语言语言一样我们也先从helloworld开始编写我们的第一个shell脚本:
shell echo 'hello world!'
将上述文件写入到文件,并命名为helloworld.sh,shell脚本都是以sh后缀为结尾的。利用chmod +x helloworld.sh
命令为其添加执行权限,在输入./helloworld.sh
执行。我们的终端就会打印hello world!
。第一个shell脚本就执行成功了。
- shell变量
shell脚本中的变量分为系统变量 和自定义变量 。系统变量包含$HOME,$PWD,$USER等,通过set
命令可以查看当前系统中的所有变量,env
命令可以显示所有环境变量。变量名有字母,数字,下划线三者组成但不能以数字开头,变量名一般用大写字母定义。
- 定义变量语句:
变量名=变量值
,要注意的是等号左右两边不能有空格否则会失效。- 删除变量:
unset 变量名
- 声明静态变量:
readonly 变量名
,注意静态变量不能用unset删除- 使用变量:
$变量名
- 将命令返回值赋值给给一个变量
A=`HOME`
注意A=$(HOME)
这种写法也可以但不是所有shell都支持.- 声明环境变量(临时)
export 变量名=变量值
通过这种方式设置的环境变量直在本次登陆中有效。- 声明环境变量(永久)修改/etc/profile文件,在文件中加入
export 变量名=变量值
,保存后执行source /etc/profile
命令让环境变量生效。该方法对所有用户生效,如果想要只对单个用户生效需要修改~/.bash_profile文件并执行source ~/.bash_profile
- 位置参数变量
位置参数变量指的是调用shell命令时,跟在命令后面以空格隔开的参数,举了例子cp /etc/profile /tmp/
命令中cp
是shell指令,/etc/profile
和/tmp/
则是命令的参数。在shell脚本中我们可以获取到这些参数。
$n
:$0
代表命令本身,$1-$9
代表第一个到第九个参数,第十个及以上参数利用${n}
来获取$#
: 该命令用于获取所有参数的个数,包含命令本身。$*
和$@
都可以用来获取所有参数,但前者将所有参数看作一个整体,后者将参数区分对待。
- 预定义变量
预定义变量是由系统保留和维护的一组特殊的变量,这些变量通常用于保存程序运行状态等
$$
返回当前进程的 PID 进程号$!
返回后台运行的最后一个进程的 PID 进程号。$?
返回最后一次执行的命令的返回状态,0为执行正确,非0执行失败。
以上就是关于shell中变量部分的全部内容,下一篇我们将会学习shell中的几种运算符。