问题:
判断
循环
比较
特殊

以前在做Windows客户端开发的时候,天天对着C++来玩,各种奇奇怪怪的玩法和原理可以说非常熟悉。 现在工作需要用C++的地方很小,反而是什么语言都用一下,导致每个语言都是用的时候查一下。连当年 很熟悉的C++也感觉有点陌生了。可能是自己记性不太好,无论当时对那个语言多熟悉,过后基本就忘得 差不多了,不过编程语言表面的东西其实也就这样,所以萌生记录一下编程语言的基本,也记录一下自己 遇到的特殊问题,为自己以后需要用回这种语言时能给自己回看一下。
感觉这段时间用得比较多的算是Shell吧,那就先记录Shell吧。我一般都是用Bash,所以下面说的默认都是 说的Bash

基本

Bash的本质:一切皆字符串

看看下面的例子:

1
2
3
$ v=3+3
$ echo $v
3+3

在 Bash 中即使不带引号,数字也只是字符,不会出现求值的操作。

单引号、双引号、元字符

在 Bash 中,不使用引号也是可以作为字符串的,如echo abcd是正确的使用方法。需要用引号就是 因为标题中说到的元字符,Bash中有9个元字符,元字符会将一个字符串分割为多个子串,它们是| & ( ) ; < > space tab。当字符串中出现 元字符的时候,不使用引号Bash就会让元字符发挥它原本的功能。
而单引号和双引号的区别是,单引号会令字符不具有特殊含义,如变量的展开:

1
2
3
4
5
$ v=hello
$ echo "$v"
hello
$ echo '$v'
$v

当然,Bash也是支持特殊字符转义的,也和其它语言一样是用\

判断

1
2
3
4
5
6
if true
then
    echo 'true'
else
    echo 'false'
fi

下面的写法和上面功能一样,只需用;符隔开即可,其它语言很小这样写,但在Bash中出现得不小:

1
2
if true; then echo 'true'; else echo 'false'; fi

待续…

参考