1.SHELL是什么?
•Shell是用户与内核进行交互操作的一种接口,目前最流行的Shell称为bash Shell
•Shell也是一门编程语言<解释型的编程语言>,即shell脚本
•一个系统可以存在多个shell,可以通过cat /etc/shells命令查看系统中安装的shell,不同的shell可能支持的命令语法是不相同的
Shell还是一个功能相当强大的编程语言,易编写、易调试、灵活性强。Shell是解释执行的脚本语言,所谓脚本语言就是不用编译就可以直接执行的语言。在Shell中可以调用Linux系统命令。
2 shell脚本的执行方式
第一种:输入脚本的绝对路径或相对路径
首先要赋予+x权限
/root/helloWorld.sh
./helloWorld.sh
或者,不用赋予+x权限,而用解释器解释执行u+x
sh helloworld.sh
第二种:bash或sh +脚本
sh /root/helloWorld.sh
sh helloWorld.sh
第三种:在脚本的路径前再加". "
. /root/helloWorld.sh
. ./helloWorld.sh
区别:第一种和第二种会新开一个bash,不同bash中的变量无法共享
3.1 系统变量
shell中的变量
1)Linux Shell中的变量分为“系统变量”和“用户自定义变量”,可以通过set命令查看系统变量。用$输出变量
2)系统变量:$HOME、
$PWD、
$SHELL、
$USER等等 当前用户
3)显示当前shell中所有变量:set
3.2定义变量
1)基本语法:
变量=值 TT=100 输出变量 echo $TT
2)变量定义规则
(1)变量名称可以由字母、数字和下划线组成,但是不能以数字开头。
(2)等号两侧不能有空格
(3)变量名称一般习惯为大写
(4)双引号和单引号有区别,双引号仅将空格脱意(既字符串之间有空格时要加引号),单引号会将所有特殊字符脱意
y=bb echo 'hello $y'----------hello $y 单引号将所有的特殊字符都当做字符串使用,脱意
echo "hello $y"---------------hello bb
字符串之间有空格时,要加引号。
x=hello word //报错,不能有空格,不用引号时。x="hello word",ok
3)案例
STR=“hello world”
A=8 定义变量A
unset A 撤销变量A
readonly B=2 声明静态的变量B=2,不能unset
export变量名 可把变量提升为全局环境变量,可供其他shell程序使用
这也是环境变量要加export的原因,这样所有的用户都可以使用这个变量
export JAVA_HOME=/opt/home/jdk-7.01
export A=1 定义的变量,会对自己(当前用户)所在的shell进程及其子进程生效
B=1 定义的变量,只对自己的所在的shell进程生效
4.将命令的返回值赋值给变量(特别重要)
•A=`ls -la` 反引号,运行里面的命令,并把结果返回给变量A
•A=$(ls -la) 等价于反引号
A=`pwd` & echo $A ----------/home/hello
A=$(pwd) $ echo $A------------/home/hello
•$? 表示上一个命令退出的状态
•$$ 表示当前进程编号
•$0 表示当前脚本名称
•$n 表示n位置的输入参数(n代表数字,n>=1)
•$# 表示参数的个数,常用于循环
•$*和$@ 都表示参数列表
•$* 和 $@ 都表示传递给函数或脚本的所有参数,不被双引号" "包含时,都以$1 $2 … $n 的形式输出所有参数
•当它们被双引号" "包含时,"$*" 会将所有的参数作为一个整体,以"$1 $2 … $n"的形式输出所有参数;"$@" 会将各个参数分开,以"$1" "$2" … "$n" 的形式输出所有参数
5.echo输出命令
(1)基本语法:
echo [选项] [输出内容]
选项: echo -e: 支持反斜线控制的字符转换
控制字符 |
作 用 |
\ |
输出本身 |
a |
输出警告音 |
|
退格键,也就是向左删除键 |
c |
取消输出行末的换行符。和“-n”选项一致 |
e |
ESCAPE键 |
f |
换页符 |
|
换行符 |
|
回车键 |
|
制表符,也就是Tab键 |
v |
垂直制表符 |
|