首先看一个简单的shell程序
``` shell
#!/bin/bash
# --------------------------------- #
# ? 匹配一个字符
# * 匹配任意多个字符
# [abc] 匹配中括号中的所有单个字符中的一个
# [0-9] 匹配0-9中任意一个字符
# [^abc] 去反
# --------------------------------- #
# $ 调用变量
# '' 忽略所有特殊字符 , 直接将单引号中的内容当成字符串
# "" 会将 $ , ` , \ 作为例外 , 别的字符全部作为字符串
# `` 执行``中的命令并返回命令执行的结果
# $() 同上
# # 注释
# \ 转义
# --------------------------------- #
answer='I am fine, thank you.'
echo "The date is `date`.\r\nHey, I am $(whoami).\r\nHow are you?\r\n$answer"
理想的输出如下
Hey, I am ec2-user.
How are you?.
I am fine, thank you.
然而实际执行结果为
The date is Thu Apr 26 09:25:24 UTC 2018.\r\nHey, I am ec2-user.\r\nHow are you?\r\nI am fine, thank you.
这是为什么那?
我们man echo看一下
NAME
echo - display a line of text
SYNOPSIS
echo [SHORT-OPTION]... [STRING]...
echo LONG-OPTION
DESCRIPTION
Echo the STRING(s) to standard output.
-n do not output the trailing newline
-e enable interpretation of backslash escapes
-e 选项是使能回车符号,如果没有加,就是上述的执行结果。
【知识点】
1、 `"``"`和`$()`等价,是执行命令并返回结果
2、 `echo -e` 使能回车符
领取专属 10元无门槛券
私享最新 技术干货