美文网首页
Shell script: 如果变量没定义

Shell script: 如果变量没定义

作者: louyang | 来源:发表于2017-11-01 14:19 被阅读116次

1 使用未定义变量的风险

文章[1]中给出了一个例子,

chroot=$1
...
rm -rf $chroot/usr/share/doc

运行这段代码,如果用户忘了输入参数,则系统目录下的文档全部被删掉了。

2 对策

set -u
或
set -o nounset 
前者是缩写,后者是完整表达方式。

使用“set -u”,可以使脚本在遇到未定义变量时终止运行。

3 在不确定变量是否被定义时,为其赋缺省值

格式:

变量名=${变量名:-[缺省值]}

例如:

a.sh:

#!/bin/bash

set -o nounset

# 因为VAR没定义,所以VAR被复制为缺省值abc
VAR=${VAR:-abc}
echo "\$VAR="$VAR

# 使用未定义的变量VAR,因为使用了set -o nounset,脚本被终止。
unset VAR
echo "\$VAR="$VAR

运行:

$ ./a.sh
$VAR=abc
./a.sh: line 9: VAR: unbound variable

如果不写缺省值,这下面的语句执行后,VAR为空字符串。

VAR=${VAR:-}

参考文献

1. Writing Robust Bash Shell Scripts
2. Shell script spec

相关文章

  • Shell script: 如果变量没定义

    1 使用未定义变量的风险 文章[1]中给出了一个例子, 运行这段代码,如果用户忘了输入参数,则系统目录下的文档全部...

  • Shell Script (一)基础学习

    Shell Script 定义:shell script 是利用shell的功能所写的一个“程序”(program...

  • shell默认变量

    shell 默认的变量设定 针对脚本执行后接的参数,shell script 有默认的变量设定,根据这些变量我们可...

  • Shell 中的系统变量简介

    Shell 中有两种变量类型:系统变量(环境变量)和用户自定义的变量(本地变量或Shell变量)。 如果要查看当前...

  • Linux-Shell脚本(1)

    shell script介绍 1、shell script 1.1、定义 其实就是纯文本文件,以固定的语法组织起来...

  • Shell常用命令(md格式方便阅读和复制粘贴)

    Shell Shell中的变量 系统变量 自定义变量 自定义变量规则 Shell特殊变量 运算符 条件判断 基本语...

  • 07. Shell脚本变量和参数

    变量变量基础shell的变量定义同标识符的定义规则shell中,取变量的值,需要用到$符,$变量名变量的定义 变量...

  • Shell脚本

    一、Shell脚本的规则 1、变量的规则 1.1 定义变量规则: 变量名=值 1.2 shell定义变量的规则: ...

  • shell基础在工作中的应用

    shell编程基础:1. shell变量:环境变量、特殊变量、用户自定义变量2. shell输入输出3 shell...

  • 2019-01-05shell编程之变量的定义

    一、shell能做什么? 二、shell语言的执行方式 三、shell变量的定义 1,自定义变量: 特性: 赋值 ...

网友评论

      本文标题:Shell script: 如果变量没定义

      本文链接:https://www.haomeiwen.com/subject/cltgpxtx.html