Linux的Shell编程基础(下)--printf 命令/test 命令/流程控制/函数/输入与输出重定向/文件包含

Posted 数据运营与数据分析

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux的Shell编程基础(下)--printf 命令/test 命令/流程控制/函数/输入与输出重定向/文件包含相关的知识,希望对你有一定的参考价值。


目录

1、Shell printf 命令

2、Shell test 命令

3、Shell 流程控制

4、Shell 函数

5、Shell 输入/输出重定向

6、Shell 文件包含  


一、Shell printf 命令

printf和echo都是输出命令,printf 由 POSIX 标准所定义,因此使用 printf 的脚本比使用 echo 移植性好。


默认 printf 不会像 echo 自动在执行语句后添加换行符,我们可以手动添加 \n(echo "Hello, xiaohuang!" 等价于 printf "Hello, xiaohuang!\n")


printf的格式替代符%s %c %d %f    

  • %-10s  #限定宽度为10个字符的字符串,字符不够空格来补(-表示左对齐,没有则表示右对齐)

  •  %-4.2f  #限定最小宽度为4个字符的浮点数,宽度不够空格来补,小时点后面保留2位,位数不够0来补,左对齐

  •  %d     #十进制整数型数据

  •  %c      #表示输出格式为字符

[root@hadoop02 shell01]# vim Demo4.sh#!/bin/bash#printf的使用printf "%-10s %-8s %-4s\n" 姓名 性别 身高mprintf "%-10s %-8s %-4.2f\n" 小王 男 1.7 printf "%-10s %-8s %-4.2f\n" 小张 男 1.86543printf "%-10s %-8s %-4.2f\n" 小刘 女 1.79876 ~ "Demo4.sh" 6L, 222C written#添加可执行权 [root@hadoop02 shell01]# chmod +x Demo4.sh#查看可执行权[root@hadoop02 shell01]# lltotal 4-rwxr-xr-x. 1 root root 222 Oct 18 06:34 Demo4.sh#执行脚本[root@hadoop02 shell01]# sh Demo4.sh 姓名 性别 身高m小王 男 1.70小张 男 1.87小刘 女 1.80[root@hadoop02 shell01]#
printf的转义字符
序列 说明
\a 警告字符,通常为ASCII的BEL字符
\b 后退
\c 抑制(不显示)输出结果中任何结尾的换行字符(只在%b格式指示符控制下的参数字符串中有效),而且,任何留在参数里的字符、任何接下来的参数以及任何留在格式字符串中的字符,都被忽略
\f 换页(formfeed)
\n 换行
\r 回车(Carriage return)
\t 水平制表符
\v 垂直制表符
\\ 一个字面上的反斜杠字符
\ddd 表示1到3位数八进制值的字符。仅在格式字符串中有效
\0ddd 表示1到3位的八进制值字符

二、Shell test 命令

Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。

test 与[] 有同样的效果,如:

  • [ $1 -ne $2 -a $1 -gt $2 ] 等价于 test $1 -ne $2 -a $1 -gt $2 等价于[[ $1 -ne $2 && $1 -gt $2 ]]

但是test一般不能和逻辑运算符混用

[root@hadoop02 shell01]# vim Demo5.sh #!/bin/basha=10b=$1echo "原有参数a=${a}"echo "传递参数b=${b}"
if test -n "${b}" -a $1 -eq ${a}then printf "字符不为空," printf "字符长度为:${#b}\n" printf "结果:$1 = ${a}\n"elif test -n "${b}" -a $1 -gt ${a}then printf "字符不为空," printf "字符长度为:${#b}\n" printf "结果:$1 > ${a}\n"elif test -n "${b}" -a $1 -lt ${a}then printf "字符不为空," printf "字符长度为:${#b}\n" printf "结果:$1 < ${a}\n" else printf "请在执行代码时传递数值参数!\n"fi~ "Demo5.sh" 24L, 578C written [root@hadoop02 shell01]# sh Demo5.sh 1原有参数a=10传递参数b=1字符不为空,字符长度为:1结果:1 < 10

以上是关于Linux的Shell编程基础(下)--printf 命令/test 命令/流程控制/函数/输入与输出重定向/文件包含的主要内容,如果未能解决你的问题,请参考以下文章

Linux Shell编程基础

shell编程基础-find命令

Linux的Shell编程基础(下)--printf 命令/test 命令/流程控制/函数/输入与输出重定向/文件包含

linux中的shell编程----基础

linux下shell编程梳理

大数据学习初体验:Linux学习+Shell基础编程+hadoop集群部署