讲个故事
小L步入学堂已有几年,从认识老师,到学会自己阅读,最后阅读后的运用等等!
对于一个事物,从认知到了解,再到运用,那么其中的原理是怎么看待的呢?
echo
1、 看待文本
# 当输入一个文本内容时,打印的也是这句话
[root@localhost ~]# echo this is a helloworld!
this is a helloworld!
# 当输入*号时,打印的是当前目录文件名
[root@localhost ~]# echo *
aa2 bb cc cc2 curr.txt dos err hello.c hello.js ll.txt ss
# 为什么输入* 不打印*呢?
# 当echo执行打印的时候,会进行展开后边输入的内容!!!
举例:
# 当要打印结尾为txt后缀的文件时,echo会进行展开,展开后的结果进行打印内容
[root@localhost ~]# echo *.txt
curr.txt ll.txt
2、看待路径
# 对于路径的展开
# 先来展开下家目录 ~
[root@localhost ~]# echo ~
/root
# 结果 家路径~,展开后的结果为 /root
# 展开相符合的路径
[root@localhost ~]# echo /usr/*/bin
/usr/i686-buildroot-linux-gnu/bin /usr/local/bin
3、看待算术
格式:$((表达式))
# 展开算术 2+2的结果
[root@localhost ~]# echo $((2 + 2))
4
算术操作符
操作符 | 说明 |
---|---|
+ | 加 |
- | 减 |
* | 乘 |
/ | 除(但是记住,因为展开只是支持整数除法,所以结果是整数。) |
% | 取余,只是简单的意味着,“余数” |
** | 取幂 |
4、看待花括号
对于花括号,类似于正则表达式中的[],符合其中之一!
[root@localhost ~]# echo Number_{1..5}
Number_1 Number_2 Number_3 Number_4 Number_5
5、看待系统参数
# 进行打印出,系统中的PATH值
[root@localhost ~]# echo $PATH
/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin
6、命令替换
对于一个命令的执行结果,可以展开为输出结果
[root@localhost ~]# echo $(which ls)
/bin/ls
7、双引号
把文本放在双引号中,shell 使用的特殊字符,都失去它们的特殊含义,被当作普通字符来看待。
有几个例外: $,\ (反斜杠),和 `(倒引号)。这意味着单词分割、路径名展开、波浪线展开和花括号展开都将失效,然而参数展开、算术展开和命令替换仍然执行。
# 如果表达式在双引号中,则能正常执行
[root@localhost ~]# echo "$((2+2))"
4
ps: 双引号中存在转义字符,这在之前文章有过学习!
8、单引号
如果需要禁止所有的展开,我们要使用单引号。
[root@localhost ~]# echo '$((2+2))'
$((2+2))