printf命令
printf 命令的语法 默认不会像 echo 一样自动添加换行符
printf format-string [arguments...] #format-sting 格式控制字符串 arguments 为参数列表
#!/bin/bash
printf "%-10s %-8s %-4s\n" 姓名 性别 体重kg
printf "%-10s %-8s %-4.2f\n" 郭靖 男 66.1234
printf "%-10s %-8s %-4.2f\n" 杨过 男 48.6543
printf "%-10s %-8s %-4.2f\n" 郭芙 女 47.9876
执行脚本,输出结果:(test.sh 文件使用vi 命令创建并cd 到指定目录)
$ chmod +x ./test.sh #设置执行权限
$ ./test.sh #执行脚本
姓名 性别 体重kg
郭靖 男 66.12
杨过 男 48.65
郭芙 女 47.99
格式替代字符
%s %c %d %f 都是格式替代符,%s 输出一个字符串,%d 整型输出,%c 输出一个字符,%f 输出实数,以小数形式输出。
%-10s 指一个宽度为 10个字符(- 表示左对齐,没有则表示右对齐),任何字符都会被显示在 10 个字符宽的字符内,如果不足则自动以空格填充,超过也会将内容全部显示出来。
%-4.2f 指格式化为小数,其中 .2 指保留2位小数。
%s %c %d %f 都是格式替代符,%s 输出一个字符串,%d 整型输出,%c 输出一个字符,%f 输出实数,以小数形式输出。
%-10s 指一个宽度为 10 个字符(- 表示左对齐,没有则表示右对齐),任何字符都会被显示在 10 个字符宽的字符内,如果不足则自动以空格填充,超过也会将内容全部显示出来。
%-4.2f 指格式化为小数,其中 .2 指保留2位小数。
执行脚本,输出结果如下;对应理解
1 abc
1 abc
abcdefabcdefabc
def
a b c
d e f
g h i
j
and 0 #null 不显示
printf 待研究------(0)
shell test 命令
适用范围:检查某个条件是否成立 :数值 字符 文件
num1=100
num2=100
if test $[num1] -eq $[num2]
then
echo '两个数相等!'
else
echo '两个数不等!'
fi
a=5
b=6
result=$[a+b] #等号两边不能有空格
echo "result 为: $result"
字符串类测试
= | 等于则为真 |
---|---|
!= | 不相等则为真 |
-z | 字符串的长度为0则真 |
-n | 字符串的长度不为0则真 |
另外,Shell 还提供了与( -a )、或( -o )、非( ! )三个逻辑操作符用于将测试条件连接起来,其优先级为: ! 最高, -a 次之, -o 最低。
cd /bin
if test -e ./notFile -o -e ./bash
then
echo '至少有一个文件存在!'
else
echo '两个文件都不存在'
fi
shell 流程控制
注: 在sh/bash里,如果else分支没有语句执行,就不要写这个else。
if else 语句
if condition
then
command1
command2
...
fi
if [ $(ps -ef | grep -c "ssh") -gt 1]; then echo "true"; else echo "false"; fi
if else-if else 实例
a=10
b=20
if [ $a == $b ]
then
echo "a 等于 b"
elif [ $a -gt $b ]
then
echo "a 大于 b"
elif [ $a -lt $b ]
then
echo "a 小于 b"
else
echo "没有符合的条件"
fi
for 循环
for循环的一般格式
for loop in 1 2 3 4 5
do
echo "The value is: $loop"
done
输出结果
The value is: 1
The value is: 2
The value is: 3
The value is: 4
The value is: 5
while语句
#!/bin/bash
int=1
while(( $int<=5 ))
do
echo $int
let "int++"
done
注: Bash let 命令,它用于执行一个或多个表达式,变量计算中不需要加上 $ 来表示变量
until循环
case
echo '输入 1 到 4 之间的数字:'
echo '你输入的数字为:'
read aNum
case $aNum in
1) echo '你选择了 1'
;;
2) echo '你选择了 2'
;;
3) echo '你选择了 3'
;;
4) echo '你选择了 4'
continue #跳出当前循环
;;
*) echo '你没有输入 1 到 4 之间的数字'
break #跳出整个循环
;;
esac