#!/bin/bash
#! 是一种约定标记,他可以告诉系统这个脚本需要什么样的解释器来执行。
变量
(一)、定义变量
- 变量名和等号之间不能有空格;
- 首个字符必须为字母(a-z,A-Z)。
- 中间不能有空格,可以使用下划线(_)。
- 不能使用标点符号。
- 不能使用bash里的关键字(可用help命令查看保留关键字)。
(二)、使用变量
country="China"
echo $country
echo ${country}
echo "I love my ${country}abcd!"
(三)、重定义变量
country="China"
country="ribenguizi"
(四)、只读变量
readonly country="China"
或
country="China"
readonly country
(五)、删除变量
unset variable_name
变量类型
- 局部变量
局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。 - 环境变量
所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。 - shell变量
shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行
特殊变量
变量 | 含义 |
---|---|
$0 | :-- 当前脚本的文件名– |
$n | 传递给脚本或函数的参数,n是一个数字,表示第几个参数,例如,第一个$1,第二个$2 |
$# | 传递给脚本或函数的参数个数 |
$* | 传递给脚本或函数的所有参数 |
$@ | 传递给脚本或函数的所有参数,被双引号包含时与$*稍有不同 |
$? | 上个命令的退出状态,或函数返回值 |
$$ | 当前shell进程ID,对于shell脚本就是这些脚本所在的进程ID |
$* 和 $@ 的区别为: 都表示传递给函数或脚本的所有参数,
- 不被双引号(" “)包含时,都以”$1" “ 2 " … " 2" … " 2"…"n” 的形式输出所有参数。
- 被双引号(" “)包含时,”$*" 会将所有的参数作为一个整体,以"$1 $2 … n " 的 形 式 输 出 所 有 参 数 ; " n"的形式输出所有参数;" n"的形式输出所有参数;"@" 会将各个参数分开,以"$1" “ 2 " … " 2" … " 2"…"n” 的形式输出所有参数。
$? 获取上一个命令的退出状态。就是上一个命令执行后的返回结果。退出状态是一个数字,大部分命令成功会返回 0,失败返回 1。