自定义变量
定义变量
变量名=变量值
num=10
引用变量
$变量名
如:i=$num 把变量num的值赋给i
显示变量
使用echo命令可以显示单个变量取值
echo $num
清除变量
使用unset命令清除变量
unset varname
变量的其他用法
read string
从键盘输入一个字符串付给变量string,若string没定义则先定义再使用
readonly var=100
定义一个只读变量,只能在定义时初始化,以后不能改变,不能被清除。
export var=300
使用export说明的变量,会被导出为环境变量,其它shell均可使用
注意:此时必须使用source 2_var.sh才可以生效或者 ".空格"
注意事项:
等号两边不能直接接空格符,若变量中本身就包含了空格,则整个字符串都要用双引号、或单引号
括起来;双引号内的特殊字符可以保有变量特性,但是单引号内的特殊字符则仅为一般字符。
例:name="aa bb"
echo "$name is me" //输出:aa bb is me
echo '$name is me' //输出:$name is me
环境变量
定义:
一般在~/.bashrc或/etc/profile文件中(系统自动调用的脚本)使用export设置,允许用
户后来更改。VARNAME = value; export VARNAME
显示环境变量
使用env命令可以查看所有的环境变量。
清除环境变量
使用unset命令清除变量
常见环境变量:
HOME:用于保存注册目录的完全路径名。
PATH:用于保存用冒号分隔的目录路径名,存放含有可执行文件的目录
HOSTNAME:主机名
......
预定义变量:
$#:传给shell脚本参数的数量
$*:传给shell脚本参数的内容
$1、$2、$3、...、$9:运行脚本时传递给其的参数,用空格隔开
$?: 命令执行后返回的状态
"$?"用于检查上一个命令执行是否正确(在Linux中,命令退出状态为0表示该命令正确执行
,任何非0值表示命令出错).
$0:当前执行的进程名
$$:当前执行的进程号
"$$"变量最常见的用途是用作临时文件的名字,以保证临时文件不会重复.
脚本变量的特殊用法: "" `` '' \ () {}
"" (双引号): 包含的变量会被解释
'' (单引号): 包含的变量会当做字符串解释
`` (反引号): 反引号中的内容作为系统命令,并执行其内容,可以替换输出为一个变量
\ 转义字符:
同c语言 \n \t \r \a等 echo命令需加-e转义
(命令序列):
由子shell来完成,不影响当前shell中的变量
{命令序列}:
在当前shell中执行,会影响当前变量
条件测试
test命令有两种格式:
test condition 或 [ condition ]
shell脚本中的条件测试如下
文件测试、字符测试、数字测试、复合测试
文件测试
-e是否存在 -d是否目录 -f是否文件
-r可读 -w可写 -x可执行
-L符号链接 -c是否字符设备 -b是否块设备
-s文件非空
字符串测试:
test str_operator "str"
test "str1" str_operator "test2"
[ str_operator "str" ]
[ "str1" str_operator "str2" ]
其中str_operator可以是
= 两个字符串相等 != 两个字符串不相等
-z 是不是空串 -n 是不是非空串
测试数值格式如下:
test num1 num_operator num2
[ num1 num_operator num2 ]
num_operator可以是:
-eq 数值相等
-ne 数值不相等
-gt 数1大于数2
-ge 数1大于等于数2
-le 数1小于等于数2
-lt 数1小于数2
控制结构:
if [ 条件1 ]; then
执行第一段程序
elif [ 条件2 ]; then
执行第二段程序
else
执行第三段程序
fi
----------------------------------------------------------------------------
case $变量名称 in
"第一个变量内容" )
程序段1
;;
"第二个变量内容" )
程序段2
;;
*)
其他程序段
exit 1
esac
for (( 初始值; 限制值; 执行步阶))
do
程序段
done
初始值:变量在循环中的起始值
限制值:当变量值在这个限制范围内时,就继续进行循环
执行步阶:每作一次循环时,变量的变化量
declare是bash的一个内建命令,可以用来声明shell变量、设置变量的属性。declare也可以写
作typeset。
declare -i s 代表强制把s变量当做int型参数运算。
for var in con1 con2 con3 ...
do
程序段
done
第一次循环时,$var的内容为con1
第二次循环时,$var的内容为con2
第三次循环时,$var的内容为con3
......
while [ condition ]
do
程序段
done
当condition成立的时候进入while循环,
直到condition不成立时才退出循环。
break
break命令允许跳出循环。
break通常在进行一些处理后退出循环或case语句
continue
continue命令类似于break命令
只有一点重要差别,它不会跳出循环,只是跳过这个循环步。
函数
定义函数的两种格式
函数名 () {
命令
}
-------------------------------------------------------
function 函数名 () {
命令
}
函数可以放在同一个文件中作为一段代码,也可以放在只包含函数的单独文件中
所有函数在使用前必须定义,必须将函数放在脚本开始部分,直至shell解释器首次发现它时,才可以使用
函数调用格式为:
函数名 param1 param2 ... ...
使用参数同在一般脚本中使用特殊变量
$1,$2 ...$9一样
函数可以使用return提前结束并带回返回值
return 从函数中返回,用最后状态命令决定返回值
return 0 无错误返回
return 1 有错误返回