7 read命令
read命令用于从标准输入中读取单行数据。当读到文件结束符时,exit code为1,否则为0。
参数说明:
-p:后面可以接提示信息;-t:后面跟秒数,定义输入字符的等待时间,超过等待时间后会自动忽略此命令。
示例:
read name
yrx
echo $name
yrx
read -p "Enter your name:" -t 30 name
Enter your name:yrx
read -p "Enter your name:" -t 5 name
8 echo命令8.1 输出格式
echo用于输出字符串。格式:
echo STRING
原样输出字符串,不进行转义或取变量:
name=yrx
echo '$name\"' # 单引号
显示命令的执行结果:
echo `date` # 左上角的那个点
8.2 显示字符串
普通字符串:
echo "Hello world!"
echo Hello world! # 引号可以省略
转义字符:
echo " \"Hello world! \" "
echo \"Hello world! \"
8.3 显示变量
name=yrx
echo "My name is ${name}"
8.4 显示换行/不换行
显示换行:
echo -e "hi\n" # \n换行
echo "yrx"
输出:
hi
yrx
显示不换行:
echo -e "Hi \c" # \c 不换行
echo yrx
输出:
Hi yrx
8.5 显示结果定向至文件
echo "Hello world" > output.txt # 将内容以覆盖的方式输出到output.txt
9 printf命令
printf命令用于格式化输出,类似于C/C++中的printf函数。
默认不会在字符串末尾添加换行符。
格式:
printf format-string [arguments...]
示例:
printf "d.\n" 123 # 123.
printf "%-10.2f.\n" 123.45678 #123.46 .
printf "My name is %s\n" "yrx" #My name is yrx
printf "%d + %d = %d\n" 2 3 `expr 2 \+ 3` #2 + 3 = 5
10 test命令与判断符号[]10.1 逻辑运算符10.2 test命令在命令行中输入man test,可以查看test命令的用法。 test命令用于判断文件类型,以及对变量作比较。 test命令用exit code返回结果shell脚本语法,而不是使用stdout。0表示真,非0表示假。
test 2 -lt 3
echo $? # 0,$?输出上一条命令的返回值
tets 2 -gt 3
echo $? # 1
ls
homework output.txt test.sh tmp
test -e test.sh && echo "exist" || echo "Not exist"
exist # test.sh 文件存在
test -e test2.sh && echo "exist" || echo "Not exist"
Not exist # testh2.sh 文件不存在
10.3 文件判断
文件类型判断:
test -e filename # 文件是否存在
test -f filename # 是否为文件
test -d filename # 是否为目录
文件权限判断:
test -r filename # 判断文件是否可读
test -w filename # 可写
test -x filename # 可执行
test -s filename # 是否为空文件
10.4 整数间的比较
test $a -eq $b # 是否相等
-eq # 等于
-ne # 不等于
-gt # 大于
-lt # 小于
-ge # 大于等于
10.5 字符串比较
test -z STRING # 判断STRING是否为空,如果为空,返回true
test -n STRING # 判断STRING是否非空,如果非空,返回true(-n可以省略)
test str1 == str2 # 判断两字符串是否相等
test str1 != str2 # 判断两字符串是否不相等
10.6 多重条件判定
test -r filename -a -x filename # 两条件是否同时成立
-a
-o # 至少一个成立
! # 取反
10.7 符号判断[]
[]与test的用法几乎一样,更常用于if语句中。另外 [ [ ] ]是[]的加强版,支持的特性更多。
例如:
[ -2 -lt 3 ] # 为真,返回0
echo $? # 0
ls
homework output.txt test.sh tmp
[ -e test.sh ] && echo "exist" || echo "Not exist"
exist # test.sh 文件存在
[ -e test2.sh ] && echo "exist" || echo "Not exist"
Not exist # testh2.sh 文件不存在
注意:
例如:
name="dfjb yrx"
[ $name == "dfjb yrx" ] # 错误,中间有空格
[ "$name" == "dfjb yrx" ] # 正确
11 判断语句
if...then
11.1 单层if
if condition
then
语句1
语句2
语句2
...
fi
示例:
#! /bin/bash
a=3
if [ $a -gt 2 ]
then
echo `expr ${a} + 2`
fi
11.2 if-else
if condition
then
语句1
语句2
...
else
语句1
语句2
...
fi
示例:
#! /bin/bash
a=3
if [ $a -gt 3 ]
then
echo `expr ${a} + 2`
else
echo `expr ${a} \* 2 `
echo hhh
fi
11.3 多层if-elif-elif-else
if condition
then
语句1
语句2
...
elif condition
then
语句1
语句2
...
elif condition
then
语句1
语句2
...
else
语句1
语句2
...
fi
示例:
#! /bin/bash
read -p "score 0-100 :" score
if [ $score -gt 90 ]
then
echo "very good"
elif [ $score -gt 60 ]
then
echo good
else
echo bad
fi
11.4 case-esca形式
类似于C/C++中的switch语句。
命令格式:
case $变量 in
值1)
语句1
语句2
...
;; # 相当于break
值2)
语句1
语句2
...
;;
*) # 相当于default
语句1
语句2
...
;;
esac
示例:
#! /bin/bash
read -p "score 1-4 :" score
case $score in
3)
echo "very good"
echo "${score}"
;;
2)
echo "good"
;;
1)
echo "bad"
;;
*)
echo "very bad"
;;
esac
12 循环语句
13 函数
14 exit命令
15 文件重定向
16 引入外部脚本
来源:【九爱网址导航www.fuzhukm.com】
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!