shell语法
\(\Huge{Linux-shell语法}\)
概论
shell是我们通过命令行与操作系统沟通的语言。
shell脚本可以直接在命令行中执行,也可以将一套逻辑组织成一个文件,方便复用。
AC Terminal中的命令行可以看成是一个“shell脚本在逐行执行”。
Linux中常见的shell脚本有很多种,常见的有:
- Bourne Shell(
/usr/bin/sh或/bin/sh) - Bourne Again Shell(
/bin/bash) - C Shell(
/usr/bin/csh) - K Shell(
/usr/bin/ksh) - zsh
- …
Linux系统中一般默认使用bash,文件开头需要写#! /bin/bash,指明bash为脚本解释器。
注释
# 单行注释
:<<string
多行注释,string可以为任意字符串
<<string
变量
定义变量时等号两边不能加空格。
a1 = 'lbx' # 单双引号都可定义字符串,也可不加引号;只有双引号的字符串可以进行操作
readonly a1
declare -r a1 # 将变量变为只读,之后再次赋值会报错
unset a1 # 删除变量
# 自定义变量改为环境变量
export a1
declare -x a1
# 环境变量改为自定义变量
export a1 = 'lbx'
declare +x name
echo ${#a1} # 获取字符串长度
echo ${a1:0:2} # 提取子串
默认变量
#! /bin/bash # 在文件中写
echo "FileName:"$0 # $x表示第x个参数,$0是文件名(包含路径)
ehco "parameter_1"$1
ehco "parameter_2"$2
chmod +x test.sh # 编译
./test.sh 114 514 # 执行并传参数
| 参数 | 说明 |
|---|---|
$# |
代表文件传入的参数个数 |
$* |
由所有参数构成的用空格隔开的字符串 |
$@ |
每个参数分别用双引号括起来的字符串 |
| `$ | 参数 |
| ------------ | ------------------------------------------------------------ |
| 脚本当前运行的进程ID |
| $? | 上一条命令的退出状态(注意不是stdout,而是exit code)。0表示正常退出,其他值表示错误 |
| $(command) | 返回command这条命令的stdout(可嵌套) |
| command | 返回command这条命令的stdout(不可嵌套) |
数组
数组中可以存放多个不同类型的值,只支持一维数组,初始化时不需要指明数组大小。数组下标从\(0\)开始。
array=(1 ab "def" lbx) # 两种定义方式
array[0]=1
${array[index]} # 读取某个元素的值,index为@或*时表示读取整个数组
${#array[@]} # 数组长度
expr命令

浙公网安备 33010602011771号