shell语法02
截图来自yxc
read命令:
read命令用于从标准输入中读取单行数据。当读到文件结束符时,exit code为1,否则为0。类比c++的cin
参数:
-p:后面可以接提示信息
-t:后面接秒数,超出秒数会自动忽略这条命令
例子:

echo命令
echo用于输出字符串
显示普通字符串:
echo "hello world" or echo hello world
显示转义字符
echo "\"hello world\"" # 结果为 "hello world"
也可不加引号:echo \"hello world\"
注意:单引号会原样输出,因此要用双引号
显示换行:
echo -e "hi\nkeqing"# -e:开启转义
hi
keqing
显示不换行:
echo -e hello \c # -e开启转义,\c不换行
echo world
结果:hello world
显示命令结果
echo `命令`
printf 命令
类似c++ printf ,格式化输出,默认不带回车
格式:printf format -string
例子:
printf "1+2=%d\n" 3
1+2=3
test命令和判断符号[]
test用exit code为输出结果,0为真。非0为假
test执行后是不会直接返回结果,我们查看上一条命令,echo #? 查看test结果
整数间的比较

字符串比较

判断符号[]
判断符号[] 和 test几乎一样,常用于if语句
注意:
[]内的每一项都要用空格隔开
中括号内的变量,最好用双引号括起来
中括号内的常数,最好用单或双引号括起来
例子:[ 3 -lt 4 ]
判断语句
单层if
if condition
echo ...
fi
单层if else
if condition
then
echo ...
else
echo ..
fi
多层if
if condition1
then
echo ...
elif condition2
then
echo ...
else
echo ...
fi
case语句
case $变量名称 in
值1)
语句。。
;; # 类似c++的break
值2)
语句。。
;;
*) # 类似c++的default
语句。。
;;
esac
循环语句
for in do done
格式:
for var in n1 n2 n3
do
echo $var
done
输出当前路径下的所有文件名,每个文件名一行:
for i in `ls`
do
echo $i
done
输出有序数列110,az:
for i in {1..10}
do
echo $i
done
for ((…;…;…)) do…done
注意是两层括号
输出1~10:
for (( i=1; i <= 10; i ++))
do
echo $i
done
while…do…done循环
格式:
while condition
do
语句
done
例如不断读取
while read a
do
echo $a
done
until…do…done循环
当条件为真结束
格式:
until condition
do
语句1
语句2
...
done
示例,当用户输入yes或者YES时结束,否则一直等待读入。
until [ "${word}" == "yes" ] || [ "${word}" == "YES" ]
do
read -p "Please input yes/YES to stop this program: " word
done
break命令
跳出当前一层循环,注意与C/C++不同的是:break不能跳出case语句。

浙公网安备 33010602011771号