Shell (export touch trap set )
程序员文章站
2022-04-30 15:49:35
...
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 # 重置所有捕捉信号