Shell学习

1. 变量名

变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界。

推荐给所有变量加上花括号,这是个好的编程习惯。

2. 单引号双引号

单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;单引号字串中不能出现单引号(对单引号使用转义符后也不行)。双引号里可以有变量,双引号里可以出现转义字符。

>  echo "${JAVA_HOME}"
/home/wangjun/jdk1.8.0_181
>  echo '${JAVA_HOME}'
${JAVA_HOME}

3. expr命令

expr 是一款表达式计算工具,使用它能完成表达式的求值操作。

例如,两个数相加(注意使用的是反引号 ` 而不是单引号 ')

#!/bin/bash
val=`expr 2 + 2`
echo "两数之和为 : $val"

4. 位置变量

位置变量指的是函数或脚本后跟的第 n 个参数。 需要注意的是从第 10 个开始要用花括号调用,例如${10} 。

shift 可对位置变量控制,每执行一次 shift 命令,位置变量个数就会减一,而变量值则提前一位。shift n,可设置向前移动

n 位。例如:

特殊变量:

符号

描述

$0

脚本自身名字

$?

返回上一条命令是否执行成功,0 为执行成功,非 0 则为执行失败,存放上一次进程的结束状态(退出状态码)

$#

位置参数总数

$*

所有的:位置参数被看做一个字符串

$@

每个位置参数被看做独立的字符串

$$

当前进程 PID

$!

上一条运行后台进程的 PID

5. 判断条件

数值:

运算符

描述

-eq

等于

-ne

不等于

-gt

大于

-lt

小于

-ge

大于等于

-le

小于等于

字符串:

运算符

描述

-n

字符串不为空

-z

字符串为空

文件:

符号

描述

-f

是文件

-d

是文件夹

-s

文件有内容

-x

文件可执行

-e

文件存在

通用:

符号

描述

-a

逻辑与

-o

逻辑或

在bash中,test命令可以使用[]运算符取代,但需要注意 [ 之后和 ] 之前需要加空格。eg:判断输入的第一个参数不为空

6. 循环

shell实战实例

从另一个文件中拷贝100份并 替换指定字符

Last updated

Was this helpful?