expr命令,echo命令,printf命令,test命令与判断符号[],判断语句:
expr命令:
expr
会在stdout
中输出结果。
如果为逻辑关系表达式,则结果为真,stdout
为1
,否则为0
expr
的exit code( 相当于 return 值 )
:
如果为逻辑关系表达式,则结果为真,exit code
为0
,否则为1
echo命令:
命令:
echo -e "Hi \c" # -e 开启转义 \c 不换行
echo "114514^^^666"
输出结果:
Hi 114514^^^666
test:--------------------------------====------------------------------------
printf命令:
printf "%10d.\n" 123 # 占10位,右对齐
printf "%-10.2f.\n" 123.123321 # 占10位,保留2位小数,左对齐
printf "My name is %s\n" "yxc" # 格式化输出字符串
printf "%d * %d = %d\n" 2 3 `expr 2 \* 3` # 表达式的值作为参数
test命令与判断符号[]:
-eq :equal(相等)
-ne :not equal(不等)
-gt :greater than(大于)
-ge :greater than or equal(大于或等于)
-lt :less than(小于)
-le :less than or equal(小于或等于)
&&
表示与,||
表示或
二者具有短路原则:
expr1 && expr2
:当expr1
为假时,直接忽略expr2
expr1 || expr2
:当expr1
为真时,直接忽略expr2
表达式的exit code
为0
,表示真;为非零,表示假。(与C/C++中的定义相反)
判断语句:
用法与C++差不多:
a=3
b=4
if [ "$a" -lt "$b" ] && [ "$a" -gt 2 ]
then
echo ${a} 在范围内
fi
总结:
#! /bin/bash
#expr1 && expr2:当expr1为假时,直接忽略expr2
#expr1 || expr2:当expr1为真时,直接忽略expr2
test -e test.sh && echo "exist" || echo "Not exit"
echo $?
test -e test10086.sh && echo "exit" || echo "Not exit"
echo $?
printf "=====================\n"
a=3
b=4
echo $(expr $a '>' $b)
test $a -eq $b
echo $?
printf "=====================\n"
if [ $a -lt $b ]
then
printf "YES\n"
fi
printf "=====================\n"
expr 3 '<' 4
printf "return :%d\n" $?
if expr 3 '<' 4
then
printf "YES\n"
fi
printf "=====================\n"
[ 3 '<' 4 ]
printf "return :%d\n" $?
if [ 3 '<' 4 ]
then
printf "YES\n"
fi
printf "=====================\n"
if ! [ $a '<' $b ]
then
printf "%d -bt %d,hhh~~\n" $a $b
else
printf "%d -lt %d,www~~\n" $a $b
fi
printf "=====================\n"
if [ $a -eq 1 ]
then
echo $ac等于1
elif [ $a -eq 2 ]
then
echo ${a}等于2
elif [ $a -eq 3 ]
then
echo ${a}等于3
else
echo 其他
fi
标签:expr2,shell,expr,echo,语法,expr1,printf,test
From: https://www.cnblogs.com/Aidan347/p/17035055.html