在使用shell脚本之前,我们是否应该先通俗的了解一下shell是什么呢?shell可以理解为命令解释器。我们知道,如果我们想要计算机去做一件事儿,就得告诉它。但是计算机内核不可能直接识别我们的命令,所以shell就是介于内核和用户交互之间的中间层,接收用户输入的命令,解释给内核执行。一般来说就像windows操作系统,你点击鼠标可能就会完成一个操作,实际这些图形下面就是shell了。该系统下的命令窗口的dos语言就是一种shell。常见得比如Linux和Unix系统里面的bash,ksh,csh等。所谓的shell脚本就是将很多的shell命令语句集合在一个文件中,来完成一些较复杂的错做。
在Shell脚本编程中,echo命令是用来输出一些字符串,用作提示。下面就简单介绍下它的基本用法,以后有补充的再扩充。下面的图片示例中,"#"是注释符
基本的语法为: echo [-en] String # -e 转义反斜扛字符 -n 禁止换行
常用的几种输出格式:
1.显示普通字符串
例如:
echo "It is a test" 结果是: It is a test
这个字符串可以加双引号也可以加单引号也可以不加,区别是:当使用单引号时,里面是什么就输出什么,即使有转义字符也不识别。当使用双引号时,可以识别转义字符。如果不加引号,则将字符串中的单个单词作为字符串输出,各个字符串之间用一个空格分割。
例如:
echo "\"It is a test\"" 结果是: "It is a test"
2.显示至定向文件
例如:
echo "It is a test" > myfile # >后面跟文件名
3.显示(不)换行(图片来源)
例如:
#!/bin/sh
echo -e "OK! \c" # -e 开启转义 \c 不换行
echo "It is a test"
echo -e "OK!\n" # -e 开启转义 \n换行
echo "It it a test"
另外,echo常用的转义字符如下:
参数 | 说明 |
---|---|
\a | 闹铃 |
\b | 退格(即删除前一个字符) |
\c | 强制换行 |
\e | 退出 |
\f | Formfeed(没验证还,不知道神马意思回头再改) |
\n | 换行 |
\t | 水平制表符 |
\v | 垂直制表符 |
\\ | 反斜扛 |
\" | 双引号 |
\nnn | 插入nnn"八进制"所代表的ASCII字符 |
完整的ASCII码对照表
Shell脚本的执行过程(图片来源)
shell的转义符
字符 | 说明 |
‘’(单引号) | 又叫硬转义,其内部所有的shell 元字符、通配符都会被关掉。注意,硬转义中不允许出现’(单引号)。 |
“”(双引号) | 又叫软转义,其内部只允许出现特定的shell 元字符:$用于参数代换 `用于命令代替 |
\(反斜杠) | 又叫转义,去除其后紧跟的元字符或通配符的特殊意义。 |
如图所示我们可以看到,双引号经过参数扩展,命令行代换和算术代换后进入执行步骤,而单引号转义字符直接进入执行步骤。两个在shell检测过程中跳过了不同数量的步骤。