Shell杂记

来源:互联网 发布:arm单片机介绍 编辑:程序博客网 时间:2024/05/16 10:00
  1. 保证shell脚本的安全性。
    #!/bin/bash 后面加上-e-e 的作用是当当前脚本出现问题时就退出。 脚本出现错误时,如果不加-e会继续执行下去,这种忽略错误的行为不是好行为。-v的作用是打印当前脚本。可以在脚本出错退出时很方便的定位到出错的语句。
    所以在脚本头该写的是:#!/bin/bash -ev
  2. 确保创建目录一定成功。
    mkdir的时候,加上-p的时候能够确保该文件夹创建成功,加上 -m arg配置权限。
    所以下面语句mkdir -m 777 -p /path/to/dir。这个语句,在目录/path/to/下面创建dir文件夹,并赋予777即所有用户都可读写执行的权限。同时,该语句保证mkdir一定成功,即如果dir的任意上级目录不存在,系统都会创建该上级目录,直至dir;如果dir目录存在,则不做任意改动并返回成功,如果不加-p,上面两种情况都会返回失败。
  3. 获取当前脚本所在目录。
    在运行脚本的时候,确保脚本运行时所在的目录是非常重要的,脚本运行时目录会在调用这个脚本的目录。而很多时候我们希望脚本运行时的目录是在脚本所在的目录。以脚本/path/to/test.sh为例。假设在path目录下用语句./to/test.sh调用。这个时候脚本运行环境的目录是在/path下,而不是脚本所在目录/path/to下。所以经常需要将脚本重新定位要它本身所在目录。

    DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

    以脚本/path/to/test.sh为例,假设该文件中存在以上语句。在path目录下用语句./to/test.sh调用。
    那么,语句${BASH_SOURCE[0]}显示的是运行该语句时候的调用命令,即./to/test.sh。然后dirname就是./to。之后,进入该目录并打印pwd,就会得到路径/path/to。这个就是脚本所在的目录。

  4. 在脚本中安装一些依赖。
    在脚本中,如果直接使用apt-get install语句,经常要你确认安装,由于是在脚本中执行,显然是没有机会按y键的。
    在安装语句中加上-y选项,比如apt-get install -y libssl-dev。这个就能默认确认安装了。

  5. 确认root权限。

    echo "Check use is root or not now."
    ROOT_UID=0
    if [ "$UID" -eq "$ROOT_UID" ]
    then
    echo "You are root."
    else
    echo "You are not root, please run as root"
    exit 1
    fi

    $UID打印当前用户UID,root用户的UID是0.二者相等,那么自然当前用户是root。
    此外,把if语句换成if [ "$whoami" -eq "root" ]也行。$whoami会打印当前用户的名字。