Skip to content

Commit 2f466a1

Browse files
committed
2017-06-26
1 parent 2f096bf commit 2f466a1

File tree

1 file changed

+49
-5
lines changed

1 file changed

+49
-5
lines changed

Shell.md

Lines changed: 49 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,21 @@
33
## 环境
44

55
- CentOS 7.3
6-
- bash + zsh
6+
- bash
77
- IntelliJ IDEA 2017.1 + Vim
88
- Xshell 5
99

1010
## 基础
1111

12+
- shell 本质是一个程序,我们这里讲的是 shell 脚本的编写/编程。
1213
- 查看 bash 版本号:`bash --version`,CentOS 7.3 是 4.2.46
13-
- 查看 zsh 版本号:`zsh --version`
1414
- 文件后缀:`sh`
15-
- 开头语言标识。文件开头是:`#!/bin/sh``#!/bin/bash`优先)(其实也可以不加,因为 Linux 默认就是 bash,只是为了合理,一般都要加),主要是告诉哪个解析器来执行脚本。如果该语句写在非第一行,那就是当做注释使用。
15+
- 开头语言标识。文件开头是:`#!/bin/sh``#!/bin/bash`优先使用这个)(其实也可以不加,因为 Linux 默认就是 bash,只是为了合理,一般都要加),主要是告诉哪个解析器来执行脚本。如果该语句写在非第一行,那就是当做注释使用。
1616
- 其中 /bin/sh 是 bash 的软链接,所以以上两种写法都可以。(证明:`ls -l /bin/sh`)
17+
- 但是业界上,sh 和 bash 其实是有历史区别的。
18+
- sh 即 Bourne shell,POSIX(Portable Operating System Interface)标准的 shell 解释器,它的二进制文件路径通常是 /bin/sh,由 Bell Labs 开发。
19+
- bash 是 Bourne shell 的替代品,属 GNU Project,二进制文件路径通常是 /bin/bash。
20+
- Mac OS 上 /bin/sh 和 /bin/bash 是两个不同的文件
1721
- 换行符(line separator):IntelliJ IDEA 下编写脚本的时候一定要注意后下角的 LF 还是 CRLF,LF 才是 Linux 的要求。
1822
- 执行脚本命令:`bash /opt/test.sh`(推荐),还有:`. /opt/test.sh``source /opt/test.sh`
1923
- 用 source 或是 点开头 的优点是:后面执行的脚本可以读取 source 或 点 执行脚本中的变量内容,但是这个读取也只是基于一个 shell 状态下,如果是另外开的 shell 是没有用的。
@@ -35,11 +39,51 @@ export JAVA_HOME
3539
```
3640

3741
- 变量的等于号,左右两边不要有空格
38-
- 普通字符串变量:`gitnavi_url="gitnavi.com"`
42+
- 普通字符串变量:`gitnavi_url="gitnavi.com"`,虽然也可以用单引号或是不使用任何符号,但是不推荐。
43+
- 使用双引号可以在变量中使用其他变量,双引号内容中有双引号,再加个转移斜杠即可,如下:
44+
- `str="Hello, \"${gitnavi_url}\"! \n"`
3945
- 数值型变量、路径型变量:`gitnavi_age=3`
46+
- 删除变量:`unset gitnavi_url`
47+
- 使用变量:
48+
- `echo $gitnavi_url`,不推荐这种
49+
- `echo ${gitnavi_url}`,推荐这种
50+
- 拼接字符串:
51+
52+
``` shell
53+
gitnavi_url="gitnavi.com"
54+
gitnavi_say="hello, ${gitnavi_url} !"
55+
56+
echo ${gitnavi_say}
57+
```
58+
59+
- 获取字符串长度,多加一个 # 号:
60+
61+
``` shell
62+
gitnavi_url="gitnavi.com"
63+
echo ${#gitnavi_url}
64+
```
65+
66+
- 截取字符串(下标是从 0 开始):
67+
68+
``` shell
69+
gitnavi_url="gitnavi.com"
70+
echo ${gitnavi_url:1:4}
71+
```
72+
73+
- 查找子字符串出现的最开始下标位置(下标开始是 0,所以下面结果是:2):
74+
75+
``` shell
76+
gitnavi_url="gitnavi.com"
77+
echo `expr index "${gitnavi_url}" navi`
78+
```
4079

4180

4281

4382
## 资料
4483

45-
- <>
84+
- <https://github.com/qinjx/30min_guides/blob/master/shell.md>
85+
- <http://www.runoob.com/linux/linux-shell.html>
86+
- <http://c.biancheng.net/cpp/shell/>
87+
- <https://www.zybuluo.com/yangfch3/note/619239>
88+
- <https://tinylab.gitbooks.io/shellbook/content/>
89+
- <http://www.jianshu.com/p/e1c8e5bfa45e>

0 commit comments

Comments
 (0)