博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
echo和Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数
阅读量:6443 次
发布时间:2019-06-23

本文共 3736 字,大约阅读时间需要 12 分钟。

hot3.png

  • 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 worldWelcome to Linux world
  • 示例2:输出一个声明的变量值

xc@xc-HP-Pavilion-dv4-Notebook-PC:~/workspace/filetype$ x=13xc@xc-HP-Pavilion-dv4-Notebook-PC:~/workspace/filetype$ echo the value of x=$xthe 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 666File Name: ./test.shFirst Parameter : XCFirst Parameter : 666Quoted Values: XC 666Quoted Values: XC 666Total Number of Parameters : 2

 

 

转载于:https://my.oschina.net/u/3489169/blog/918082

你可能感兴趣的文章
运维管理工具之saltstack使用实践-安装配置
查看>>
我的友情链接
查看>>
YUV分析
查看>>
PyTorch#181130
查看>>
打开oracle enterprise manager console控制台失败
查看>>
shell-脚本集合3
查看>>
提高生产力的2个方法:软件复用和知识库
查看>>
北漂之心
查看>>
人为制造回滚事件
查看>>
经典SQL语句--很全面
查看>>
tomcat8 安装|解决启动慢|进入管理|host-manager 403错误
查看>>
红黑树
查看>>
ios测试基础六:ios模拟不同网速
查看>>
linux信号解释(5)--bash下的理解
查看>>
jhead命令详解
查看>>
软件安装协议范本
查看>>
4.9.7 注释的抽取
查看>>
2016年上半年系统集成中项4月4日作业
查看>>
阅读nodejs文档有感
查看>>
我的友情链接
查看>>