Shell 脚本基础知识

Shell 环境

解释器

  • Bourne Shell(/usr/bin/sh或/bin/sh)
  • Bourne Again Shell(/bin/bash)
  • C Shell(/usr/bin/csh)
  • K Shell(/usr/bin/ksh)
  • Shell for Root(/sbin/sh)

在shell脚本中指定解释此脚本的shell程序:

#!/bin/sh
或者
#!/bin/bash

#! 告诉系统其后路径所指定的程序即是解释此脚本文件的 Shell 程序。

执行脚本

作为可执行程序

需要加./,否则系统会去PATH里寻找指定文件

chmod +x ./name.sh # 给脚本添加可执行权限
./name.sh # 执行脚本

作为解释器的参数

这种方式运行的脚本,不需要在第一行指定解释器信息

/bin/sh test.sh

Shell 变量

定义变量

变量名和等号之间不能有空格

your_lastname="zy"
echo $your_lastname
your_firstname="lin"
echo $your_firstname
echo ‘my name is ${your_lastname}-${your_firstname}‘

使用变量

需要在变量名前加$, 花括号可用来识别变量边界:

for file in `ls /etc`;do
	echo $file
done

for file in $(ls /etc);do
	echo $file
done

只读变量

使用readonly后,变量不可修改

myUrl = "https"
readonly myUrl

删除变量

不能删除只读变量

unset myUrl

Shell 字符串

单引号

单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的,且转义字符无效

双引号

双引号里可以有变量,可以出现转义字符

字符串拼接

#!/bin/bash
your_name="lzy"
# 使用双引号拼接
greeting="hello, "$your_name" !"
greeting_1="hello, ${your_name} !"
echo $greeting  $greeting_1
# 使用单引号拼接
greeting_2=‘hello, ‘$your_name‘ !‘
greeting_3=‘hello, ${your_name} !‘
echo $greeting_2  $greeting_3

Shell 脚本基础知识

字符串长度

str="lzyuchen"
echo ${#str}

提取子字符串

str="lzyuchen"
echo ${str0:2}

查找子字符串

str="lzyuchen"
echo `expr index "{$str}" u`

以上脚本中是反引号,而不是单引号

Shell 数组

bash支持用括号表示一维数组(不支持多维数组),并且没有限定数组的大小。

# 定义数组
lists = (value0,value1)

# 定义数组元素
n=1000
lists[n[ = valuen

# 读取数组
n=999
valuen=${array_name[n]}

# 使用 @ 符号可以获取数组中的所有元素

echo ${array_name[@]}

# 获取数组的长度
length=${#array_name[@]}

Shell 注释

# 开头的行就是注释,会被解释器忽略。

Shell 脚本基础知识

上一篇:linux-lv-磁盘扩容


下一篇:基于Ubuntu 16.04 使用数据集运行 ORB_SLAM2