3.shellScript

3.shellScript

3 常识

3.1 执行shell script的两种方法

三 基础

未整理

  1. dirname $0:脚本所在的目录。可以方便的通过该目录来定位。

    1. dirname用于获取指定路径所在的目录。

    2. $0:表示当前运行的程序的名字,如果是在shell中则输出shell的名字,如果是在脚本中,则输出脚本的文件名。比如在bash中执行echo %0,输出的是“-bash”。

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

1 架构

2 变量

变量类型有三种:

  1. 环境变量

  2. 局部变量

  3. shell变量:由shell设置,即有环境变量,也有局部变量。常见的有$HOME$PATH

    1. 参考:https://www.gnu.org/software/bash/manual/html_node/Shell-Variables.html

定义变量nameA=valueA(注意等号两边没有空格),使用变量$name${name},声明为只读变量(不能再被修改)readonly name,删除变量(不能删除只读变量)unset name

# 普通变量
A=2
# 数组
a=(1 2 3 4 5)
echo ${a[0]}
echo ${a[-1]}
echo ${a[*]} 数组中所有元素
echo ${a[@]} 数组中所有元素
echo ${a[@]:0:3} 数组中1-3个元素
echo ${#a[@]} 数组中元素的个数
# 在curl中使用变量
url="www.example.com"
curl "$url"

set -x
file=file:///Users/xxx/temp/a
proto=file
curl --proto "=$proto" $file

3 循环

3.1 if else

if then的语法形如:

if condition
then
    command1 
    ...
fi

也可以写成一行,如if [ $(ps -ef | grep -c "ssh") -gt 1 ]; then echo "true"; fi

if then else的语法:

if condition
then 
    command1
else
    command2
fi

if else if:

if condition
then 
    command1
elif condition2
then 
    command2
else
    command3
fi

注意条件表达式必须放在方括号中。

3.2 for

for file in `ls /etc`

4 常用指令

  1. 等待

    1. wait:等待上一批或上一个脚本执行完(即上一个的进程终止),再执行wait之后的命令。

    2. sleep

      sleep 1    # 睡眠1秒
      sleep 1s   # 睡眠1秒
      sleep 1m   # 睡眠1分
      sleep 1h   # 睡眠1小时

七 未整理

  1. https://www.cnblogs.com/fhefh/archive/2011/04/15/2017613.html

Last updated

Was this helpful?