shell 脚本第一行要指明要使用的 shell,其格式是:
1
2
3
4
5
6
7
8#!/bin/bash
```
在通常的 shell 脚本的行里,井号(#) 用作注释行.然而 shell 脚本文件的第一行是个特例,井号后接感叹号指明用哪个 shell 来运行脚本.
- 在环境变量前加 $ 符号可以输出环境变量的值.
```
echo $USER在脚本中看到美元符号,shell 脚本会以为在引用一个变量,可以通过在变量两侧添加花括号来识别美元符号后的变量名:
1
2
3
4
5
6
7
8
9${variable}
```
- 通过等号给用户变量赋值时,在变量/等号和值之间不能出现空格.
- 类似于系统变量,也可通过美元符号获得用户变量的值.
```
name="chao"
echo $name将一个变量的值赋值给另一个变量时,必须使用美元符号,否则 shell 会将变量名解释成普通的文本字符串.
反引号(`)允许你将 shell 命令的输出赋值给变量(必须用反引号把整个命令行圈起来).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30d=`date`;echo $d
```
- 输出重定向: 将命令的输出发送到一个文件中.
```
date > date.txt
```
`>` 符号是覆盖文件中的文本(如果文本中已有数据),要想在文本数据中追加内容可以使用 `>>` 符号.
- 输入重定向: 将文件的内容重定向到命令.
```
wc < date.txt
```
结果: 1 6 43
wc 命令提供了对数据中文本的计数.默认情况下,它会输出3个值:
- 文本的行数;
- 文本的词数;
- 文本的字节数.
- 管道: 将一个命令的输出重定向到另一个命令,类似于反引号(`). 格式:
```
command1 | command2
```
管道两边的命令会同时运行,在系统内部将它们连接起来.在第一个命令产生输出的同时,输出会被立即送给第二个命令.传输数据不会用到任何中间文件或缓冲区域.
- expr 命令: Bourne shell 提供的用来处理数据表达式的命令.
- bash shell 兼容了 expr 表达式,但同时也提供了一个更简单的方法.在 bash 中,在将一个数学运算结果赋给某个变量时,可以用美元符号和方括号($[operation])将数学表达式圈起来.
```
var=$[1 + 5]
12月
02