1、Shell 程序中用“ $var ”的形式来引用名为 var 的变量的值。
如:# echo $PATH
2、Shell 预定义变量
预定义变量与环境变量 不同的是, 用户只能根据 Shell 的定义来使用这些变量
常见的有:
$# 是传递给该脚本的参数个数
$? 是最后命令的退出状态,即前一命令返回的状态值 ,0表示没有错误,其它表示有错误
$0 存储 shell程序自己的名称 (脚本本身的名称)
$1 是传递给该脚本的第一个参数
$[1-n] 是传递给该脚本的第1-n个参数
$* 是以一个单字符串显示所有向脚本传递的参数);以"$1 $2 … $n"的形式输出所有参数;(是一个字符串)
$$ 是shell脚本运行当前的进程号( pid)
$! 存储上一个后台执行命令的进程号( pid)
$@ 是传递给脚本的所有参数的列表;以"$1" "$2" … "$n" 的形式输出所有参数(是一个数组)
3、 Shell 字符串比较
= 比较字符串是否相同,相同为真。
!= 比较字符串是否不同,不同为真。
-n 判断字符串的长度是否大于 0,大于 0 为真。
-z 判断字符串的长度是否等于 0,等于 0 为真。
例:
# test “abc” = “abc” //等号两边要有空格
# echo $? //值为 0 表示前一命令结果为真,为 1 表示假
# str= “abc” # test $str = “ab”
# echo $? # test –n str
# echo $?
4、Shell 数字比较
-eq 相等
-ne 不等于
-ge 大于等于
-le 小于等于
-gt 大于
-lt 小于
例:
# test 2 -eq 3
# echo $?
# num=3 # test $num –gt 2
# echo $?
5、 Shell 逻辑测试
-a 与
-o 或
! 非
例:
# test -f file1 -a -w file1 file1 是文件 并且 file1 可写。
6、Shell 文件测试
-e 如果文件存在,则为真
-r 如果文件存在且可读,则为真
-f 如果文件存在且为普通文件,则为真
-c 如果文件存在且为字符型特殊文件,则为真
-b 如果文件存在且为块特殊文件,则为真
-d 如果文件存在且为目录,则为真
-L 如果文件存在且为符号连接,则为真
-r 如果文件存在且可读,则为真
-s 如果文件存在且长度非 0,则为真
-w 如果文件存在且可写,则为真
-x 如果文件存在且可执行,则为真
! 测试条件的否定
用法:
if[ -d /filename ] 判断filename是否为目录
7、Shell 条件判断
if(条件) then
满足条件结果
else 不满足条件结果
fi ---判断语句结束标志
注意:中括号 [] 与其中间的代码应该有空格隔开
例如:
从键盘输入两个数,按由小到大的顺序输出。
#! /bin/bash
# filename: testFile
echo "输入两个数字:" ----打印
read a b ----从键盘中读取两个数字
if[ a -lt b ] ----条件 a<b ‘[’与‘a’ 、‘b’与‘] ’ 之间要有空格
then echo $a $b ----读取变量值
else echo $b $a
fi ----结束
# .testFile ---执行文件
8、 Shell 循环控制
while(条件)
do
条件满足执行语句
done ----循环结束标志