[roc@roclinux ~]$ echo 'Hello World' Hello World [roc@roclinux ~]$ echo "Hello World" Hello World [roc@roclinux ~]$ echo Hello World Hello World至于单引号、双引号、不加引号的区别,还请看下面的内容。
#我们定义了一个变量, 叫作str [roc@roclinux ~]$ str="Hello World" #在echo后面加上str变量, 照样可以显示出来 [roc@roclinux ~]$ echo "$str, good morning" Hello World, good morning
-e
选项,并使用双引号将转义字符括起来。#一个很普通的Hello World [roc@roclinux ~]$ echo "Hello World" Hello World #尾部带有\n的Hello World, \n并没有被赋予"神奇的能力" [roc@roclinux ~]$ echo "Hello World\n" Hello World\n #使用了-e选项后, \n被赋予了"神奇的能力", 它实现了换行效果 [roc@roclinux ~]$ echo -e "Hello World\n" Hello World
-e
选项的 echo,将 \n 认为是普通字符;-e
选项的 echo,会将 \n 认为是换行符。打印参数 | 解 释 |
---|---|
\a | 响铃 |
\b | 退格(backspace) |
\e | 转义符 |
\c | 不换行 |
\f | 换页 |
\n | 换行 |
\r | 回车 |
\t | 水平制表符 |
\v | 垂直制表符 |
\ONNN | 字节数以八进制数 NNN (1 至 3 位)表不 |
\xHH | 字节数以十六进制数 HH (1 至 2 位)表不 |
[roc@roclinux ~]$ echo "Hello World" Hello World [roc@roclinux ~]$
-n
选项去掉 echo 末尾的换行符;-e
选项打印出转义字符。#使用-n后, echo后面的换行效果消失了, 这也就导致了Shell提示符显示在了提示语同一行的后面 [roc@roclinux ~]$ echo -n "Enter your username:" Enter your username:[roc@roclinux ~]$ #用-e选项加\c转义符, 也可以实现不换行效果 [roc@roclinux ~]$ echo -e "Enter your username:\c" Enter your username:[roc@roclinux ~]$
[roc@roclinux ~]$ echo 'Hello World' Hello World [roc@roclinux ~]$ echo "Hello World" Hello World [roc@roclinux ~]$ echo Hello World Hello World
输入命令 | 输出内容 | 解 释 |
---|---|---|
echo '$USER * $(date)' | $USER * $(date) | 单引号无视所有特殊字符,所有字符在它眼里 都是普通字符,都是芸芸众生 |
echo "$USER * $(date)" | root * Thu Feb 25 12:03:48 CST 2016 | 双引号会无视文件通配符,但“$”、“\”、 会起作用,我管它们叫“美金”、“砍刀”、 “硫酸雨” |
echo $USER * $(date) | root book others Thu Feb 25 12:03:48 CST 2016 |
$USER 被翻译了 root, * 被翻译了 book, others 是我当前目录下的目录结构 |
$
、\
和`
这三种特殊字符,不加引号的话则会解释所有特殊字符。\
能起到转义字符的作用,可以把后面的"
打印出来。[roc@roclinux ~]$ echo "\"Hello World\"" "Hello World" [roc@roclinux ~]$ echo '"Hello World"' "Hello World"
[roc@roclinux ~]$ echo "'Hello World'" 'Hello World'
[root@roclinux ~]# echo ""Hello World"" Hello World从输出的内容可以看出,并没有任何的双引号被显示出来,这是为什么呢?
图1
echo -e "\033[颜色1;颜色2m 要展示的文字 \033[0m"
图2
色彩 | 黑 | 红 | 绿 | 黄 | 蓝 | 洋红 | 青 | 白 |
---|---|---|---|---|---|---|---|---|
前景色 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 |
背景色 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 |
#!/bin/bash # 定义颜色变量, 还记得吧, \033、\e和\E是等价的 RED='\E[1;31m' # 红 GREEN='\E[1;32m' # 绿 YELOW='\E[1;33m' # 黄 BLUE='\E[1;34m' # 蓝 PINK='\E[1;35m' # 粉红 RES='\E[0m' # 清除颜色 # 真正使用时, 我们通过echo -e来调用 echo -e "${RED}Red color${RES}" echo -e "${YELOW}Yelow color${RES}" echo -e "${BLUE}Blue color${RES}" echo -e "${GREEN}Green color${RES}" echo -e "${PINK}Pink color${RES}"这种方法的原理是,把转义序列定义为变量,echo 时直接引用变量就行了。
#!/bin/bash # 定义颜色动作, 把echo -e也定义到变量中 SETCOLOR_SUCCESS="echo -en \\E[1;32m" SETCOLOR_FAILURE="echo -en \\E[1;31m" SETCOLOR_WARNING="echo -en \\E[1;33m" SETCOLOR_NORMAL="echo -en \\E[0;39m" # 使用时直接调用颜色动作即可 $SETCOLOR_SUCCESS && echo SUCCESS $SETCOLOR_FAILURE && echo FAILURE $SETCOLOR_WARNING && echo WARNING $SETCOLOR_NORMAL && echo NORMAL
-n
选项,这样引用时不会出现换行的问题。\\
本质是\
,在双引号中反斜线符号一定要写成\\
。&&
连接。数值 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|---|
颜色 | 黑色 | 红色 | 绿色 | 黄色 | 蓝色 | 洋红色 | 黄色 | 白色 |
RED=$(tput setaf 1) GREEN=$(tput setaf 2) RESET=$(tput sgr0) echo "${RED}red text ${GREEN}green text${RESET}"
本文链接:http://task.lmcjl.com/news/12778.html