脚本初步之echo & printf

2 篇文章 0 订阅
     1    This .txt is show how to use the printf
     2    
     3    printf同样可以用于终端打印,printf使用的参数跟C语言的printf函数是一样的,例:
     4    xue@xue-desktop:~$ printf "Hello World\n"
     5    Hello World
     6    xue@xue-desktop:~$
     7    
     8    printf使用引用文本或者由空格分隔的参数,我们可以在printf中使用格式化字符串,我们还可以指定字符串的宽度,左右对齐方式.例:
     9    在printf.sh中输入:
    10    #!/bin/bash
    11    #file name: printf.sh
    12    #2012-11-12    21:20
    13    
    14    printf "%-5s %-10s %-4s\n" No Name Mark
    15    printf "%-5s %-10s %-4.2f\n" 1 Sarath 80.3456
    16    printf "%-5s %-10s %-4.2f\n" 2 James 90.99889
    17    printf "%-5s %-10s %-4.2f\n" 3 Jeff 77.564
    18    
    19    执行该脚本:
    20    root@xue-desktop:/home/xue# chmod a+x printf.sh
    21    root@xue-desktop:/home/xue# ./printf.sh
    22    No    Name       Mark
    23    1     Sarath     80.35
    24    2     James      91.00
    25    3     Jeff       77.56
    26    root@xue-desktop:/home/xue#
    27    对于%s, %c, %f, %-5s这些,使用过C语言的printf函数的应该很容易理解的了.
    28    拿%-5s来说,指明了一个格式为左对齐且宽度为5的字符串(-表示左对齐).如果不使用-指定对齐方式,默认为右对齐形式.

    29

  

                 1    This is the books of echo
     2    2012-11-12    20:05
     3    
     4    echo 笔记
     5    
     6    echo中的', "号的比较:
     7    
     8    (1):当我们希望打印出 Hello World ! 时,应该怎么做呢?
     9    xue@xue-desktop:~$ echo Hello World !
    10    Hello World !
    11    xue@xue-desktop:~$ echo 'Hello World !'
    12    Hello World !
    13    xue@xue-desktop:~$ echo "Hello world \!"
    14    Hello world \!
    15    xue@xue-desktop:~$ echo "Hello world ! "
    16    Hello world !
    17    xue@xue-desktop:~$
    18    在15行的时候,!后面是由一个空格的,如果没有空格的话,会发生什么问题呢?来看一下:
    19    xue@xue-desktop:~$ echo "Hello World !"
    20    bash: !": event not found
    21    xue@xue-desktop:~$
    22    很显然,报错了。
    23    
    24    那么我们应该怎样使用',"呢?
    25    来看一下各种方法的副作用先,这样我们才可以更加清楚该怎么来使用', ".
    26    (1) 使用不带引号的echo 时,我们无法在所设定的文本中使用,因为bash shell中被用作命令定界符,例:
    27    xue@xue-desktop:~$ echo Hello; Hello
    28    Hello
    29    No command 'Hello' found, did you mean:
    30    Command 'hello' from package 'hello-debhelper' (main)
    31    Command 'hello' from package 'hello' (main)
    32    Hello: command not found
    33    xue@xue-desktop:~$
    34    这里我们可以看到,它把echo Hello视作一个命令, 第二个Hello也被视为另一个命令
    35    (2)使用带'的echo时,bash不会对'(单引号)中的变量求值,而是照原样显示,例:
    36    xue@xue-desktop:~$ hello=mo
    37    xue@xue-desktop:~$ echo '$hello'
    38    $hello
    39    xue@xue-desktop:~$ echo $hello
    40    mo
    41    xue@xue-desktop:~$
    42    从这里可以看出, echo '$var'将会返回$var, 而echo $var则会根据变量定义与否,返回$var的值,或者什么都不返回.
    43    (3)至于"(双引号),之前我们已经接触过了,它对于一些特殊字符,如!,则显示会出问题.例:
    44    xue@xue-desktop:~$ echo "hello!"
    45    bash: !": event not found
    46    xue@xue-desktop:~$
    47    如果想显示变量的值,使用"在合适不过了,例:
    48    xue@xue-desktop:~$ mo=hello
    49    xue@xue-desktop:~$ echo "$mo"
    50    hello
    51    xue@xue-desktop:~$

    52   


另外,还要特别注意echo & printf中的-e -n 选项。例:

root@xue-desktop:/home/xue# echo "1\n2"
1\n2
root@xue-desktop:/home/xue# echo -e "1\n2"
1
2
root@xue-desktop:/home/xue#
从上面可以看出,当我们要使用转义字符的时候,一定要记住加上-e选项。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值