Contents
1.22. printf和echo¶
#!/usr/bin/env bash
#usage:xxx
#scripts_name:xxx.sh
var=shell
printf "%s\n" $var
printf "%1s\n" $var #如果指定的长度小于参数实际的长度,则打印完整的字符串
printf "%1.2s\n" $var
printf "%2.6s\n" $var
printf "%6.6s\n" $var
printf "%10.4s\n" $var
var=123.45678
printf "%5.1f\n" $var
printf "%6.2f\n" $var
printf "%7.3f\n" $var
printf "%9.3f\n" $var
echo -e "Username: $USER\tHome directory: $HOME\n" # -e 激活转义字符功能
echo "aaaa";echo -n "bbbbbccc";echo -n "bbbb" # -n不换行
printf # printf 中使用格式化字符串,还可以指定字符串的宽度、左右对齐方式等。在默认情况下, printf 并不像 echo 命令一样会自动添加换行符,我们必须在需要的时候手动添加
printf "%-10s%-10s%20.5f" " hujianli" "Lixiaohai " 200.6
hujianli Lixiaohai 200.60000
printf "%-5s %-10s %-4s\n" No Name Mark
printf "%-5s %-10s %-4.2f\n" 1 Sarath 80.3456
printf "%-5s %-10s %-4.2f\n" 2 James 90.9989
printf "%-5s %-10s %-4.2f\n" 3 Jeff 77.564
#输出结果:
No Name Mark
1 Sarath 80.35
2 James 91.00
3 Jeff 77.56
cat >abc.sh<<eof # 将下面的内容覆盖到abc.sh脚本中
#!/bin/bash
#文件名:abc.sh
printf "%-5s %-10s %-4s\n" No Name Mark # 三个%分别对应后面的三个参数
printf "%-5s %-10s %-4.2f\n" 1 Sarath 80.34 # 减号“-”表示左对齐
printf "%-5s %-10s %-4.2f\n" 2 James 90.998 # 5s表示第一个参数占用5个字符
printf "%-5s %-10s %-4.2f\n" 3 Jeff 77.564
eof
1.22.1. echo¶
echo -n ##不换行输出 == printf
-e #识别转义和特殊意义的符号,如换行符、n、制表符\t、转义符\等。特别加以处理,而不会将它当成一般文字输出echo
#特殊字符及其作用
\n #表示新的一行
\r #表示回车
\t #表示水平制表符
\v #表示垂直制表符
\b #表示后退符
\a #表示"alert"(蜂鸣或者闪烁)
\c #表示最后不加上换行符号
\\ #表示插入\字符
echo > log1.txt #清空日志
> log2.txt #清空日志
:>file1.doc #清空日志
: # shell 中的占位符,什么事也不做