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 中的占位符,什么事也不做