1、shell的种类
- sh
- bash
- ksh
- csh
2、shell的命令种类
- 内建命令
- shell函数
- 外部命令
3、 变量
-
规范使用
- 一个字母/ 下划线+ 任意长度字母、数字、下划线
- (值)没有长度限制
- 一切值都是字符串
- 变量“裸体”(没有$前缀): $a——>${a}
- 变量被声明或赋值
- 变量被unset
- 变量被export(环境变量)
- “ ”弱引用 ‘ ’强引用
-
全局变量(默认)和局部变量
- 不能写成: var = “a”!! 等号左右不能有空格
- local声明局部变量 ,全局变量不加修饰词
#! /bin/bash #测试全局变量和局部变量的适用范围 num=123 func1(){ num=321 echo $num } func2(){ local num=456 echo $num { echo $num #123 func1 #321 echo $num #321 func2 #456 echo $num #321
-
echo输出环境变量
- echo “a” ——> echo a 可忽略 “ ”
- echo -n
#!/bin/bash echo -n "123" echo "456" echo "123" echo "456"
运行结果:
123456 123 456
- echo -e
#显示换行 echo -e "OK! \n" # -e 开启转义 echo "It is a test"
OK! It is a test
#显示不换行 echo -e "123\c" # -e 开启转义 \c 不换行 echo "456"
123456
#显示结果定向至文件 echo "It is a test" > myfile
#引用所有参数 echo "$*" #多个参数当做一个参数传递 echo "$@" #多个参数多次传递
-
环境变量
-
export:设置或显示环境变量
-
env:删除环境变量
-
unset:删除变量、函数
-v(默认)
-f -
查看变量:
env:显示环境变量
set:显示所有变量和函数
使用var=123,var是本地变量而不是环境变量
若使用export var=123,则set和env都可以显示var
4、编译和解释语言
编译型 | 解释型 | |
---|---|---|
执行前 | 要编译为机器语言 | 不用编译 |
运行时 | 不用翻译(已翻译一次) | 要翻译 |
优缺点 | 执行效率高 难以执行简单操作 | 执行效率低 |
Java、C | python、sell、awk | |
区别 | 翻译的时间不同 |
5、Linux shell的优势
- 简洁性
- 开发容易
- 便于移植
source命令:source执行脚本时,因没有子进程产生,此时脚本的export命令会影响到父进程的环境。