shell 脚本学习----三

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值