Shell 前置知识

简介

Shell是一个用C语言编写的程序,用户通过这个界面访问操作系统内核的服务。

Sell 脚本(shell script)是一种为shell编写的脚本程序,通常也称为shell。

Shell 环境

Linux 的 Shell 种类众多,常见的有:

  • Bourne Shell(/usr/bin/sh或/bin/sh)
  • Bourne Again Shell(/bin/bash)
  • C Shell(/usr/bin/csh)

Bash易用免费,使用广泛,并且也是多数Linux系统默认的Shell

运行

test.sh

1
2
#!/bin/bash
echo “Hello World”
  • #!表明这个脚本需要什么解释器执行

1. 作为可执行程序

cd到对应目录:

1
2
chmod +x ./test.sh  #使脚本具有执行权限
./test.sh #执行脚本

2. 作为解释器参数

直接运行解释器,参数即shell脚本的文件名(脚本内无需在第一行指定解释器信息)

1
/bin/sh test.sh

Shell 基础

1. Shell 变量

1.1 定义变量

1
variable_name = “shell”
  • 变量名和等号之间不能有空格

1.2 使用变量

使用一个定义过的变量,在变量名前加$

1
2
echo $variable_name
Echo ${variable_name}
  • {}帮助解释器识别变量边界

2. Shell 字符串

单引号:

1
str = ‘string’
  • 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
  • 单引号字串中不能出现单引号

双引号:

1
2
your_name='dhy'
str="Hello, I know your are \"$your_name\"! \n"
  • 双引号里可以有变量
  • 双引号里可以出现转义字符

拼接字符串

1
2
3
4
your_name="dhy"
greeting="hello, "$your_name" !"
greeting_1="hello, ${your_name} !"
echo $greeting $greeting_1

获取字符串长度

1
2
string="abcd"
echo ${#string} #输出 4

提取子字符串

1
2
string="alibaba is a great company"
echo ${string:1:4} #输出liba

查找子字符串

1
2
string="alibaba is a great company"
echo `expr index "$string" is`

3. Shell 数组