Shell应该这么学,Shell脚本

记录如何编写基本的Shell脚本,脚本变量的使用

一个简单Shell程序的解释

  接下来先写一个基本的Shell脚本,然后对脚本里的内容作出相应的解释,我首先在我的虚拟机里创建一个为/usr/local/myTest的目录,然后在里面写相关的shell脚本。
Shell应该这么学,Shell脚本_第1张图片Shell应该这么学,Shell脚本_第2张图片
  脚本程序如下:

#!/bin/bash
# 这是我第一个Shell程序
echo "Hello World"
echo "程序所在的目录为:"
pwd

  接下来我对脚本内容作出相关的解释,首先是脚本里的#!这个表示执行shell程序的shell所在,也就是执行这个脚本的解释器,后面所接的路径即是解释器所在的路径,当然有时候我们会看到第一行是这样写的#!/bin/sh,这样的效果和#!/bin/bash的效果是一样的只是sh是bash的软链接而已。在shell脚本里的注释和Python里的注释一样可以用#来注释程序。echo是输出命令,将我后面双引号里的内容输出了,并且换行。pwd是输出当前目录所在绝对路径。

Shell程序里的变量

  在Shell脚本里也是有变量的,在命令行里我们可以通过set命令来查看系统的变量,当然也可以通过unset命令来删除变量。例子如下:
Shell应该这么学,Shell脚本_第3张图片
Shell应该这么学,Shell脚本_第4张图片
Shell应该这么学,Shell脚本_第5张图片
Shell应该这么学,Shell脚本_第6张图片
  Shell脚本里的变量在初始化的时候不需要$符号,但是在使用或者输出的时候就必须得加上$符号,而且变量赋值的时候,等号两边不允许有空格。
Shell应该这么学,Shell脚本_第7张图片

Shell程序里的特殊变量

  接下来通过一段简单的Shell脚本来介绍下Shell脚本里的一些特殊的变量,主要介绍$*$#$$$!&?这几个特殊变量的含义。脚本代码如下:

#!/bin/bash
echo "$* 表示这个程序的所有参数"
echo "$# 表示这个程序的参数的个数"

touch /usr/local/myTest/a.txt
echo "$$ 表示进程的ID"

touch /usr/local/myTest/b.txt &
echo "$! 执行上一个后台指令的PID"
echo "$$ 表示进程的ID"

Shell应该这么学,Shell脚本_第8张图片
  接下来我们解释下,$*表示这个程序的所有参数,在这里参数指的是除文件名之外的参数,由于我们这里没有除了文件名之外的参数,所以我们的第一项输出为空,同时$#表示的参数个数为0。之后我们通过touch命令创建了一个文本文件,同时输出进程ID,这个进程ID指的是当前进程的ID,之后我们又通过touch命令来创建一个文本文件,之后我们输出的是上一个后台指令的PID也就是创建b.txt文本文件的进程PID。

你可能感兴趣的:(Shell)