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。
变量声明
- 不像C、Java等静态语言需要先声明然后才能使用,与Python等动态语言类似,Bash变量在使用时直接定义
-
=
作为赋值语句时两边不能有空格!,作为字符串比较符号时两边必须都有空格 - 声明或重新赋值绝不能使用
$
$VAR="abc"
这种用法是错误的,因为$还有个作用就是执行命令
VAR=abc
VAR="abc"
变量引用
- 引用变量必须使用$符号
- 以下方法等效,不能使用
{$VAR}
这种方法,会有花括号包裹变量的歧义
echo "THE VAR is" $VAR; # 多个空格时,认为是一个空格
echo "THE VAR is" ${VAR};
echo "THE VAR is ${VAR}";
单引号与双引号
''
:单引号里的任何字符都会原样输出,单引号中对变量引用是无效的,且单引号中不能出现单引号(对单引号使用转义符也不行);
""
:双引号里可以引用变量,可以出现转义字符。
流程控制
bash中对与真假的判断
返回值是0为真
,返回值非0为假
if test abc = abc; then echo $?": true"; else echo $?": false"; fi # 输出
0: true
if test abc == bc; then echo $?": true"; else echo $?": false"; fi # 输出
1: false
if test abc === bc; then echo $?": true"; else echo $?": false"; fi # 输出下面两行
bash: test: ===: binary operator expected
2: false
网友评论