shell 学习
Shell 是什么?
shell 本身是一个命令解释器,介于操作系统的内核(kernel)态和用户态之间,可以执行系统调用及系统命令等,让用户以此来与操作系统实现互动。同时,它也用来指一种计算机程序语言(类似于 C、Python 等)。一个 shell 程序一般被称为一个脚本。
Shell 语言的流派
目前,shell 主要有两大流派:
sh:burne shell (sh)burne again shell (bash)
csh:c shell (csh)tc shell (tcsh)korn shell (ksh)
目前,大部分 Linux 系统预设的 shell 都是 bash。
Ubuntu16.04 提供的 shell 环境(登录成功后默认使用 bash):
Mac OS 提供的 shell 环境:
一个极简的 bash demo: hello_world.sh
执行
方法 1: 直接使用 bash 解释器来解释执行:
或者:
方法 2: 先将文件属性改为可执行状态:
或者:
再直接执行:
输出
解释
补充知识: 文件的属性
通过ls -l
命令可以查看文件的属性,例如查看新建文件 test.sh 的属性:
可以看到,一般新建文件的默认属性是
-rw-rw-r--
,即 644,不具有可执行属性x
,可使用chmod
命令来改变文件属性(修改默认属性则使用umask
命令),例如将文件 test.sh 的属性改为可读可写可执行(rwx: 4 + 2 + 1 = 7):
Bash 中的变量
变量的定义与赋值
不像 C、Java 等静态语言需要先声明然后才能使用,而是和 Python 等动态语言类似,Bash 变量在使用时直接定义,例如:
注意:
=
两边不能有空格!否则就是语法错误了。Bash 变量命名只能使用字母,下划线和数字,并且不能以数字开头。
变量的引用
使用已定义的变量时,只要在变量名前面加$
符号即可:
或者使用${var_name}
的形式,{}
是可选的,主要是帮助解释器更好地识别变量的边界(推荐):
注意''
和""
的区别:
''
:单引号里的任何字符都会原样输出,单引号中对变量引用是无效的,且单引号中不能出现单引号(对单引号使用转义符也不行);""
:双引号里可以引用变量,可以出现转义字符。
实例:
Output:
只读变量
使用 readonly
命令可以将变量限定为只读变量,这与 C 语言中的 const 常量类型的情况相同.
删除变量
使用 unset
命令可以删除变量,但是不能删除只读变量。
变量被删除后不能再次使用。
评论