03.jpg

概述

shell脚本有多种多样,比如Bourne Shell Bourne Again Shell C Shell K Shell zsh ……
但是Linux中默认使用的是bash

使用

使用bash就要在文件开头写#! /bin/bash,用来指明bash为脚本编辑器。
示例:
新建一个test.sh文件,输入内容:

1
2
#! /bin/bash
echo "Hello World!"


运行:

1
2
3
chmod +x test.sh       # 使脚本具备可执行权限
./test.sh # 当前路径下执行
bash test.sh # 使用解释器执行

功能

注释

单行注释:

#之后的内容就是注释

1
echo 'hello world'		#这是注释


多行注释:

1
2
3
4
5
6
7
8
9
10
11
12
13
:<<EOF
第一行注释
第二行注释
第三行注释
EOF

# 注意 EOF可以替换成任意字符串

:<<abc
第一行注释
第二行注释
第三行注释
abc

变量

定义变量

定义变量,不需要加$符号,例如:

1
2
3
4
name1='hxx'
name2="hxx"
name3=hxx
# 定义字符串可以用单引号、双引号、不加引号


使用变量

使用变量需要加上$符号,或者${}符号。花括号是可选的,主要为了帮助解释器识别变量边界。

1
2
3
4
name=hxx
echo $name
echo ${name}
echo ${name}good


只读变量

使用readonly或者declare -r可以将变量变成只读

1
2
3
4
5
6
7
name=hxx

# 下边两个都可以
readonly name
declare -r name

name=abc #会报错,因为此时name为只读


删除变量

unset可以删除变量

1
2
3
name=hxx
unset name
echo $name #输出空行


变量类型

  • 自定义变量(局部变量)
    子进程不能访问的变量
  • 环境变量(全局变量)
    子进程可以访问的变量
  1. 自定义变量改成环境变量,export 或者 declare -x

    1
    2
    3
    name=hxx						#定义变量
    export name #第一种方法
    declare -x name #第二种方法
  2. 环境变量改为自定义变量,declare +x

    1
    2
    export name=hxx		#定义环境变量
    declare +x name #改为自定义变量

字符串

字符串可以使用单引号、双引号、不用引号
单引号和双引号区别:

  • 单引号中内容会原样输出,不会执行、不会取变量;
  • 双引号中内容可以执行、可以取变量;
    1
    2
    3
    name=hxx
    echo 'hello,$name \"hh\"' # 单引号字符串,输出 hello,$name \"hh\"
    echo "hello,$name \"hh\"" # 双引号字符串,输出 hello,hxx "hh"
    获取字符串长度:
    使用`$