欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Shell (export touch trap set )

程序员文章站 2022-04-30 15:49:35
...

Shell part 3

export

Linux export 命令用于设置或显示环境变量。

在 shell 中执行程序时,shell 会提供一组环境变量。export 可新增,修改或删除环境变量,供后续执行的程序使用。export 的效力仅限于该次登陆操作。
语法

export [-fnp][变量名称]=[变量设置值]
  • -f  代表[变量名称]中为函数名称。
  • -n  删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。
  • -p  列出所有的shell赋予程序的环境变量。

定义环境变量

$ export MYENV //定义环境变量
$ export -p //列出当前的环境变量
declare -x HOME=“/root“
declare -x LANG=“zh_CN.UTF-8“
declare -x LANGUAGE=“zh_CN:zh“
declare -x LESSCLOSE=“/usr/bin/lesspipe %s %s“
declare -x LESSOPEN=| /usr/bin/lesspipe %s“
declare -x LOGNAME=“root“
declare -x LS_COLORS=““
declare -x MAIL=“/var/mail/root“
declare -x MYENV
declare -x OLDPWD

定义环境变量赋值

$ export MYENV=7 //定义环境变量并赋值
$ export -p
declare -x HOME=“/root“
declare -x LANG=“zh_CN.UTF-8“
declare -x LANGUAGE=“zh_CN:zh“
declare -x LESSCLOSE=“/usr/bin/lesspipe %s %s“
declare -x LESSOPEN=| /usr/bin/lesspipe %s“
declare -x LOGNAME=“root“
declare -x LS_COLORS=““
declare -x MAIL=“/var/mail/root“
declare -x MYENV=“7“
declare -x OLDPWD

touch

使用指令"touch"时,如果指定的文件不存在,则将创建一个新的空白文件。例如,在当前目录下,使用该指令创建一个空白文件"file",输入如下命令:

$ touch file            #创建一个名为“file”的新的空白文件 

set -e

set -e

使用 set 选项 -e:如果命令失败(即返回一个非零的退出状态),那么脚本将退出(除非是迭代 &&, || 命令的一部分)。下面的清单 展示的例子复制了一个不存在的文件。这里使用了 set -e 选项。如果复制命令失败,脚本将退出set -e

清单 . Example_fail

#!/bin/bash
set -e
proj_dir=/opt/rollout/v12
# copy a non-existent file
cp $proj_dir/go_sup /usr/local/bin/go_sup
if [ $? != 0 ]
then
echo "could not copy $proj_dir/go_sup to /usr/local/bin/"
exit 1
fi
 
$ cp_test
cp: /opt/rollout/v12/go_sup: A file or directory in the path name does not exist.

trap

trap是Linux内建命令,用于捕捉信号。trap命令可以收到某种信号时所执行的命令,其格式如下:

trap command sig1 sig2 ...sigN

Shell在执行时,会产生三个伪信号,即shell产生的信号,不是操作系统产生的信号。

  • EXIT :从函数退出,或整个脚本执行完毕
  • ERR :当一条命令返回非0
  • DEBUG :脚本中每条命令执行之前

下面举例:

#!/bin/bash

function test_trap()
{
	echo 'test_trap';
	var=2016;
	return 1;
}

trap 'echo "[$LINENO], var = $var"' DEBUG;
trap 'echo "[$LINENO], return error"' ERR;
trap 'echo "[$LINENO], function exit"' EXIT;
test_trap;
trap 'last_command=$current_command; current_command=$BASH_COMMAND' DEBUG # 追踪每上一次执行的命令
trap 'touch ${OUT_PATH}/FAILED; echo "\"${last_command}\" command filed with exit code $?."' EXIT # 在退出之前抛出错误信息

# reset all traps
trap - EXIT DEBUG # 重置所有捕捉信号
相关标签: shell shell