学习目标:
学习常用功能语句:read、expr、test
总结:
read可读入并传递给变量
expr可用于算数运算
test可用于整数、字符、文件比较,感觉可用于条件判断。
正文:
1- 输入read
功能:读入输入的参数赋值给变量
a- 单个输入
格式:
read param
b- 多个输入
多个输入格式:
read param0 param1 param2
说明:
如果只输入了1个参数就按了回车,则后面的两个变量无赋值。
如果输入的参数多于变量个数,则多余的参数全部赋值给最后一个变量
#!/bin/bash
echo -n "input data(year month date):"
read year month date
echo "time:$year-$month-$date"
注意:对于bash不换行用-n参数;对于sh脚本不换行用\c
#sh脚本不换行 \c
echo "input data(year month date):\c"
#bash脚本不换行 -n
echo -n "input data(year month date):"
2- 算数命令expr
expr可用于算数运算。运算符前后有空格;乘法用\*;
注意如果将结果赋值给另一变量,使用反引号(esc下面和~在一块的反引号!)
示例:
#!/bin/bash
ret=`expr 2 + 3 \* 2`
echo $ret
3- 测试test
可用于测试数字、字符、文件。测试结果可用$?打印,表示上次命令执行结果,正确返回0。
a- 数字测试
eq | 等於则为真 |
-ne | 不等於则为真 |
-gt | (greater)大於则为真 |
-ge | 大于等於则为真 |
-lt | (lower)小於则为真 |
-le | 小于等於则为真 |
b- 字符测试;
= | 等於则为真 |
!= | 不相等则为真 |
-z 字符串 | 字符串的长度为零则为真 |
-n 字符串 | 字符串的长度不为零则为真 |
c- 文件测试:
-e 文件名 | 如果文件存在则为真 |
-r 文件名 | 如果文件存在且可读则为真 |
-w 文件名 | 如果文件存在且可写则为真 |
-x 文件名 | 如果文件存在且可执行则为真 |
-s 文件名 | 如果文件存在且至少有一个字符则为真 |
-d 文件名 | 如果文件存在且为目录则为真 |
-f 文件名 | 如果文件存在且为普通文件则为真 |
-c 文件名 | 如果文件存在且为字符型特殊文件则为真 |
-b 文件名 | 如果文件存在且为块特殊文件则为真 |
此外还有选项-nt、-ot 文件1是否文件2新、旧。
示例:
#!/bin/bash
#数字测试
test 6 -eq 6
echo $?
#字符测试
test "hello" = "hi"
echo $?
#文件测试
test -e hello.c
echo $?