Linux Shell脚本笔记.md 2.8 KB

Shell 是一个命令行解释器,它为用户提供了一个向 Linux 内核发送请求以便运行程序的界面系统级程序,用户可以用 Shell 来启动、挂起、停止甚至是编写一些程序。

shell脚本格式要求:

  • 脚本以#!/bin/bash 开头
  • 脚本需要有可执行权限

一个简单的Shell脚本

#!/bin/bash

# 定义变量(注意=号两端不能有空格)
city=qingdao
echo $city

name='张三'
echo $name

job="开发"
echo $job

# 使用变量,推荐加花括号{}
echo "我是一名${job}工程师"

# 单引号和双引号的区别
echo 'My name is ${name}' # 输出 My name is ${name}
echo "My name is ${name}" # 输出 My name is 张三

变量

自定义变量

Shell 中的变量分为系统变量和用户自定义变量。系统变量:\$HOME、\$PWD、\$SHELL、\$USER 等等,比如: echo $HOME 等等... 显示当前 shell 中所有变量:set

  • 定义变量:变量名=值
  • 撤销变量:unset 变量
  • 声明静态变量:readonly 变量,注意:不能 unset

定义变量的规则:

  1. 变量名称可以由字母、数字和下划线组成,但是不能以数字开头。
  2. 等号两侧不能有空格
  3. 变量名称一般习惯为大写, 这是一个规范

将命令的返回值赋给变量:

#反引号里面的命令,会把运行结果赋值给变量A
A=`date`

#等价于反引号
A=$(date)

设置环境变量

export 变量名=变量值 (将 shell 变量输出为环境变量/全局变量) source 配置文件(让修改后的配置信息立即生效) echo $变量名(查询环境变量的值)

输入参数

当我们执行一个 shell 脚本时,如果希望获取到命令行的参数信息,就可以使用到位置参数变量。一个简单的例子 simple.sh

#!/bin/bash

v1=$1
v2=$2
echo ${v1}
echo ${v2}
echo $3

执行 ./simple.sh hello world again,输出

hello
world
again

\$n (n 为数字,\$0 代表命令本身,\$1-\$9 代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如${10}) \$# (代表命令行中所有参数的个数) \$* (代表命令行中所有的参数,\$*把所有的参数看成一个整体) \$\@ (代表命令行中所有的参数,不过\$@把每个参数区分对待)

# $* 和 $@ 的区别:
# 此时它俩没有区别
for var in $*
do
    echo $var
done

echo $*
echo $@

# 

条件判断

一个简单的例子 simple.sh

#!/bin/bash

v1=$1
if [$v1 -eq '']; then
    echo '输入为空'
fi

执行 ./simple.sh,输出结果:

输入为空

多条件分支

#!/bin/bash

v1=$1
## 中括号和内部表达式必须有空格分隔
if [ $v1 -eq '' ]; then
    echo "输入为空"
else
    echo "输入${v1}"
fi