zoukankan      html  css  js  c++  java
  • echo和Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数

    • echo

    功能说明:显示文字。

    语 法:echo [-ne][字符串]或 echo [--help][--version]

    补充说明:echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开,并在最后加上换行号。

    参 数:-n 不要在最后自动换行

    -e 若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:

    \a 发出警告声;

    \b 删除前一个字符;

    \c 最后不加上换行符号;

    \f 换行但光标仍旧停留在原来的位置;

    \n 换行且光标移至行首;

    \r 光标移至行首,但不换行;

    \t 插入tab;

    \v 与\f相同;

    \\ 插入\字符;

    \nnn 插入nnn(八进制)所代表的ASCII字符;

    --help 显示帮助

    --version 显示版本信息

    每一个shell支持的echo指令可能都不太相同。

    -n 不输出最后的\n

    -e解释转义字符

    -E不解释转义字符

    • 示例1:输入一行文本并且在显示在标准输出上

    xc@xc-HP-Pavilion-dv4-Notebook-PC:~/workspace/filetype$ echo Welcome to Linux world
    Welcome to Linux world
    
    • 示例2:输出一个声明的变量值

    xc@xc-HP-Pavilion-dv4-Notebook-PC:~/workspace/filetype$ x=13
    xc@xc-HP-Pavilion-dv4-Notebook-PC:~/workspace/filetype$ echo the value of x=$x
    the value of x=13
    
    • 示例3:使用"\b"选项

    ‘-e‘后带上'\b'会删除字符间的所有空格。

    注意: Linux中的选项‘-e‘扮演了转义字符反斜线的翻译器。

    1. $ echo -e "Tecmint \bis \ba \bcommunity \bof \bLinux \bNerds"
    2.  
    3. TecmintisacommunityofLinuxNerds
    • 示例4:使用"\n"选项

    ‘-e‘后面的带上‘\n’行会在遇到的地方作为新的一行

    1. $ echo -e "Tecmint \nis \na \ncommunity \nof \nLinux \nNerds"
    2.  
    3. Tecmint
    4. is
    5. a
    6. community
    7. of
    8. Linux
    9. Nerds
    • 5. 使用‘\t‘选项

    ‘-e‘后面跟上‘\t’会在空格间加上水平制表符。

    1. $ echo -e "Tecmint \tis \ta \tcommunity \tof \tLinux \tNerds"
    2.  
    3. Tecmintis a community of LinuxNerds

     

    • 6. 也可以同时使用换行‘\n‘与水平制表符‘\t‘

    1. $ echo -e "\n\tTecmint \n\tis \n\ta \n\tcommunity \n\tof \n\tLinux \n\tNerds"
    2.  
    3. Tecmint
    4. is
    5. a
    6. community
    7. of
    8. Linux
    9. Nerds
    • 7. 使用‘\v‘选项

    -e‘后面跟上‘\v’会加上垂直制表符。

    1. $ echo -e "\vTecmint \vis \va \vcommunity \vof \vLinux \vNerds"
    2.  
    3. Tecmint
    4. is
    5. a
    6. community
    7. of
    8. Linux
    9. Nerds
    • 8. 也可以同时使用换行‘\n‘与垂直制表符‘\v‘

    1. $ echo -e "\n\vTecmint \n\vis \n\va \n\vcommunity \n\vof \n\vLinux \n\vNerds"
    2.  
    3.  
    4. Tecmint
    5.  
    6. is
    7.  
    8. a
    9.  
    10. community
    11.  
    12. of
    13.  
    14. Linux
    15.  
    16. Nerds
    • 9. 使用‘\r‘选项

    ‘-e‘后面跟上‘\r’来指定输出中的回车符。(LCTT 译注:会覆写行开头的字符)

    1. $ echo -e "Tecmint \ris a community of Linux Nerds"
    2.  
    3. is a community of LinuxNerds
    • 10. 使用‘\c‘选项

    -e‘后面跟上‘\c’会抑制输出后面的字符并且最后不会换新行。

    1. $ echo -e "Tecmint is a community \cof Linux Nerds"
    2.  
    3. Tecmintis a community @tecmint:~$
    • 11. ‘-n‘会在echo完后不会输出新行

    1. $ echo -n "Tecmint is a community of Linux Nerds"
    2. Tecmintis a community of LinuxNerds@tecmint:~/Documents$
    • 12. 使用‘\a‘选项

    ‘-e‘后面跟上‘\a’选项会听到声音警告。

    1. $ echo -e "Tecmint is a community of \aLinux Nerds"
    2. Tecmintis a community of LinuxNerds
    • 13. 使用echo命令打印所有的文件和文件夹(ls命令的替代)

    1. $ echo *
    2.  
    3. 103.odt103.pdf104.odt104.pdf105.odt105.pdf106.odt106.pdf107.odt107.pdf108a.odt 108.odt108.pdf109.odt109.pdf110b.odt 110.odt110.pdf111.odt111.pdf112.odt112.pdf113.odt linux-headers-3.16.0-customkernel_1_amd64.deb linux-image-3.16.0-customkernel_1_amd64.deb network.jpeg
    • 14. 打印制定的文件类型

    比如,让我们假设你想要打印所有的‘.jpeg‘文件,使用下面的命令。

    1. $ echo *.jpeg
    2.  
    3. network.jpeg
    • 15. echo可以使用重定向符来输出到一个文件而不是标准输出

    1. $ echo "Test Page"> testpage
    2.  
    3. ## Check Content
    4. avi@tecmint:~$ cat testpage
    5. TestPage

    echo 选项列表

    选项 描述
    -n 不输出末尾的换行符。
    -e 启用反斜线转义。
    \b 退格
    \\ 反斜线
    \n 新行
    \r 回车
    \t 水平制表符
    \v 垂直制表符
    • echo+shell中的特殊变量

    变量名只能包含数字、字母和下划线,因为某些包含其他字符的变量有特殊含义,这样的变量被称为特殊变量。

    例如,$ 表示当前Shell进程的ID,即pid,看下面的代码:

    xc@xc-HP-Pavilion-dv4-Notebook-PC:~/workspace/filetype$ echo $$
    15415
    

    特殊变量列表

    变量含义
    $0 当前脚本的文件名
    $n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。
    $# 传递给脚本或函数的参数个数。
    $* 传递给脚本或函数的所有参数。
    $@ 传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。
    $? 上个命令的退出状态,或函数的返回值。
    $$ 当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。

    命令行参数

    运行脚本时传递给脚本的参数称为命令行参数。命令行参数用 $n 表示,例如,$1 表示第一个参数,$2 表示第二个参数,依次类推。

    请看下面的代码:

    建立一个test.sh文件,写入以下内容:

     1     #!/bin/bash
      2     echo "File Name: $0"
      3     echo "First Parameter : $1"
      4     echo "First Parameter : $2"
      5     echo "Quoted Values: $@"
      6     echo "Quoted Values: $*"
      7     echo "Total Number of Parameters : $#"
    

    然后chmod +x test.sh改变文件的权限,运行结果:

    xc@xc-HP-Pavilion-dv4-Notebook-PC:~/workspace/filetype$ vim test.sh 
    xc@xc-HP-Pavilion-dv4-Notebook-PC:~/workspace/filetype$ ./test.sh XC 666
    File Name: ./test.sh
    First Parameter : XC
    First Parameter : 666
    Quoted Values: XC 666
    Quoted Values: XC 666
    Total Number of Parameters : 2
    

    =========================

    工作机会(内部推荐):发送邮件至gaoyabing@126.com,看到会帮转内部HR。

    邮件标题:X姓名X_X公司X_简历(如:张三_东方财富_简历),否则一律垃圾邮件!

    公司信息:

    1. 1.东方财富|上海徐汇、南京|微信客户端查看职位(可自助提交信息,微信打开);
  • 相关阅读:
    10分钟用JS实现微信 "炸屎"大作战
    基于nodejs 的多页面爬虫
    react+react-router 4.0+redux 构建购物车实战项目
    vue+websocket+express+mongodb实战项目(实时聊天)
    用vuejs仿网易云音乐(实现听歌以及搜索功能)
    js 实现 bind 的这五层,你在第几层?
    教你如何搭建一个自动化构建的博客
    vue-chat项目之重构与体验优化
    vue+websocket+express+mongodb实战项目(实时聊天)(二)
    css 多栏自适应布局
  • 原文地址:https://www.cnblogs.com/Chary/p/15758390.html
Copyright © 2011-2022 走看看