shell [ trap / unset 的用法]

本文介绍Bash脚本中trap与unset命令的基本应用实例。通过两个简单的脚本示例,展示了如何使用trap捕获信号并执行清理操作,以及如何使用unset取消变量设置。这些技巧对于编写健壮的Bash脚本非常有用。
trap 的初步应用
#!/bin/bash

trap 'rm -f fred1' INT

touch fred1

echo "Print Ctrl + C "
while [ -f fred1 ]; do
	echo "File exist!"
	sleep 1
done

echo "the file no longer exists"

trap INT
echo create file
echo > fred1

while [ -f fred1 ]; do
	echo "File exists too!"
	sleep 1
done

echo we never get here

exit 0

unset 的初步应用

#!/bin/bash

foo="Hello World!"
echo $foo

unset foo
echo $foo

exit 0


#!/bin/sh # Emit a useful diagnostic if something fails: bb_exit_handler() { ret=$? case $ret in 0) ;; *) case $BASH_VERSION in "") echo "WARNING: exit code $ret from a shell command.";; *) echo "WARNING: ${BASH_SOURCE[0]}:${BASH_LINENO[0]} exit $ret from '$BASH_COMMAND'";; esac exit $ret esac } trap 'bb_exit_handler' 0 set -e export AR="arm-xilinx-linux-gnueabi-ar" export ARCH="arm" export AS="arm-xilinx-linux-gnueabi-as " export BUILD_AR="ar" export BUILD_AS="as " export BUILD_CC="gcc " export BUILD_CCLD="gcc " export BUILD_CFLAGS="-isystem/home/lee/ljg/ka256/Antenna/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/ocmdriver/1.0-r0/recipe-sysroot-native/usr/include -O2 -pipe" export BUILD_CPP="gcc -E" export BUILD_CPPFLAGS="-isystem/home/lee/ljg/ka256/Antenna/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/ocmdriver/1.0-r0/recipe-sysroot-native/usr/include" export BUILD_CXX="g++ " export BUILD_CXXFLAGS="-isystem/home/lee/ljg/ka256/Antenna/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/ocmdriver/1.0-r0/recipe-sysroot-native/usr/include -O2 -pipe" export BUILD_FC="gfortran " export BUILD_LD="ld " export BUILD_LDFLAGS="-L/home/lee/ljg/ka256/Antenna/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/ocmdriver/1.0-r0/recipe-sysroot-native/usr/lib -L/home/lee/ljg/ka256/Antenna/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/ocmdriver/1.0-r0/recipe-sysroot-native/lib -Wl,-rpath-link,/home/lee/ljg/ka256/Antenna/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/ocmdriver/1.0-r0/recipe-sysroot-native/usr/lib -Wl,-rpath-link,/home/lee/ljg/ka256/Antenna/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/ocmdriver/1.0-r0/recipe-sysroot-native/lib -Wl,-rpath,/home/lee/ljg/ka256/Antenna/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/ocmdriver/1.0-r0/recipe-sysroot-native/usr/lib -Wl,-rpath,/home/lee/ljg/ka256/Antenna/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/ocmdriver/1.0-r0/recipe-sysroot-native/lib -Wl,-O1 -Wl,--allow-shlib-undefined -Wl,--dynamic-linker=/home/lee/ljg/ka256/Antenna/build/tmp/sysroots-uninative/x86_64-linux/lib/ld-linux-x86-64.so.2" export BUILD_NM="nm" export BUILD_RANLIB="ranlib" export BUILD_STRIP="strip" export CC="arm-xilinx-linux-gnueabi-gcc -march=armv7-a -marm -mfpu=neon -mfloat-abi=hard -mcpu=cortex-a9 --sysroot=/home/lee/ljg/ka256/Antenna/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/ocmdriver/1.0-r0/recipe-sysroot" export CCACHE_DIR="/home/lee/.ccache" export CCLD="arm-xilinx-linux-gnueabi-gcc -march=armv7-a -marm -mfpu=neon -mfloat-abi=hard -mcpu=cortex-a9 --sysroot=/home/lee/ljg/ka256/Antenna/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/ocmdriver/1.0-r0/recipe-sysroot" export CFLAGS=" -O2 -pipe -g -feliminate-unused-debug-types -fdebug-prefix-map=/home/lee/ljg/ka256/Antenna/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/ocmdriver/1.0-r0=/usr/src/debug/ocmdriver/1.0-r0 -fdebug-prefix-map=/home/lee/ljg/ka256/Antenna/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/ocmdriver/1.0-r0/recipe-sysroot-native= -fdebug-prefix-map=/home/lee/ljg/ka256/Antenna/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/ocmdriver/1.0-r0/recipe-sysroot= " export CPP="arm-xilinx-linux-gnueabi-gcc -E --sysroot=/home/lee/ljg/ka256/Antenna/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/ocmdriver/1.0-r0/recipe-sysroot -march=armv7-a -marm -mfpu=neon -mfloat-abi=hard -mcpu=cortex-a9" export CPPFLAGS="" export CROSS_COMPILE="arm-xilinx-linux-gnueabi-" export CXX="arm-xilinx-linux-gnueabi-g++ -march=armv7-a -marm -mfpu=neon -mfloat-abi=hard -mcpu=cortex-a9 --sysroot=/home/lee/ljg/ka256/Antenna/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/ocmdriver/1.0-r0/recipe-sysroot" export CXXFLAGS=" -O2 -pipe -g -feliminate-unused-debug-types -fdebug-prefix-map=/home/lee/ljg/ka256/Antenna/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/ocmdriver/1.0-r0=/usr/src/debug/ocmdriver/1.0-r0 -fdebug-prefix-map=/home/lee/ljg/ka256/Antenna/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/ocmdriver/1.0-r0/recipe-sysroot-native= -fdebug-prefix-map=/home/lee/ljg/ka256/Antenna/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/ocmdriver/1.0-r0/recipe-sysroot= -fvisibility-inlines-hidden" unset DISTRO export FC="arm-xilinx-linux-gnueabi-gfortran -march=armv7-a -marm -mfpu=neon -mfloat-abi=hard -mcpu=cortex-a9 --sysroot=/home/lee/ljg/ka256/Antenna/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/ocmdriver/1.0-r0/recipe-sysroot" export HOME="/home/lee" export KBUILD_OUTPUT="/home/lee/ljg/ka256/Antenna/build/tmp/work-shared/plnx-zynq7/kernel-build-artifacts" export KERNEL_VERSION="4.14.0-xilinx-v2018.3" export LC_ALL="en_US.UTF-8" export LD="arm-xilinx-linux-gnueabi-ld --sysroot=/home/lee/ljg/ka256/Antenna/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/ocmdriver/1.0-r0/recipe-sysroot " export LDFLAGS="-Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed" export LOGNAME="lee" unset MACHINE export MAKE="make" export NM="arm-xilinx-linux-gnueabi-nm" export OBJCOPY="arm-xilinx-linux-gnueabi-objcopy" export OBJDUMP="arm-xilinx-linux-gnueabi-objdump" export OS="linux-gnueabi" export PATH="/home/lee/ljg/ka256/Antenna/build/tmp/sysroots-uninative/x86_64-linux/usr/bin:/opt/petalinux/2018.3/components/yocto/source/arm/layers/core/scripts:/home/lee/ljg/ka256/Antenna/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/ocmdriver/1.0-r0/recipe-sysroot-native/usr/bin/arm-xilinx-linux-gnueabi:/home/lee/ljg/ka256/Antenna/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/ocmdriver/1.0-r0/recipe-sysroot/usr/bin/crossscripts:/home/lee/ljg/ka256/Antenna/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/ocmdriver/1.0-r0/recipe-sysroot-native/usr/sbin:/home/lee/ljg/ka256/Antenna/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/ocmdriver/1.0-r0/recipe-sysroot-native/usr/bin:/home/lee/ljg/ka256/Antenna/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/ocmdriver/1.0-r0/recipe-sysroot-native/sbin:/home/lee/ljg/ka256/Antenna/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/ocmdriver/1.0-r0/recipe-sysroot-native/bin:/opt/petalinux/2018.3/tools/xsct/SDK/2018.3/bin:/opt/petalinux/2018.3/tools/xsct/SDK/2018.3/gnu/microblaze/lin/bin:/opt/petalinux/2018.3/tools/xsct/SDK/2018.3/gnu/aarch32/lin/gcc-arm-none-eabi/bin:/opt/petalinux/2018.3/tools/xsct/SDK/2018.3/gnu/armr5/lin/gcc-arm-none-eabi/bin:/opt/petalinux/2018.3/tools/xsct/SDK/2018.3/gnu/aarch64/lin/aarch64-none/bin:/opt/petalinux/2018.3/components/yocto/source/arm/layers/core/bitbake/bin:/home/lee/ljg/ka256/Antenna/build/tmp/hosttools" export PKG_CONFIG_DIR="/home/lee/ljg/ka256/Antenna/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/ocmdriver/1.0-r0/recipe-sysroot/usr/lib/pkgconfig" export PKG_CONFIG_DISABLE_UNINSTALLED="yes" export PKG_CONFIG_LIBDIR="/home/lee/ljg/ka256/Antenna/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/ocmdriver/1.0-r0/recipe-sysroot/usr/lib/pkgconfig" export PKG_CONFIG_PATH="/home/lee/ljg/ka256/Antenna/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/ocmdriver/1.0-r0/recipe-sysroot/usr/lib/pkgconfig:/home/lee/ljg/ka256/Antenna/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/ocmdriver/1.0-r0/recipe-sysroot/usr/share/pkgconfig" export PKG_CONFIG_SYSROOT_DIR="/home/lee/ljg/ka256/Antenna/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/ocmdriver/1.0-r0/recipe-sysroot" export PKG_CONFIG_SYSTEM_INCLUDE_PATH="/usr/include" export PKG_CONFIG_SYSTEM_LIBRARY_PATH="/lib:/usr/lib" export PSEUDO_DISABLED="1" export PSEUDO_UNLOAD="1" export RANLIB="arm-xilinx-linux-gnueabi-ranlib" export READELF="arm-xilinx-linux-gnueabi-readelf" unset SHELL export STRINGS="arm-xilinx-linux-gnueabi-strings" export STRIP="arm-xilinx-linux-gnueabi-strip" unset TARGET_ARCH export TARGET_CFLAGS=" -O2 -pipe -g -feliminate-unused-debug-types -fdebug-prefix-map=/home/lee/ljg/ka256/Antenna/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/ocmdriver/1.0-r0=/usr/src/debug/ocmdriver/1.0-r0 -fdebug-prefix-map=/home/lee/ljg/ka256/Antenna/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/ocmdriver/1.0-r0/recipe-sysroot-native= -fdebug-prefix-map=/home/lee/ljg/ka256/Antenna/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/ocmdriver/1.0-r0/recipe-sysroot= " export TARGET_CPPFLAGS="" export TARGET_CXXFLAGS=" -O2 -pipe -g -feliminate-unused-debug-types -fdebug-prefix-map=/home/lee/ljg/ka256/Antenna/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/ocmdriver/1.0-r0=/usr/src/debug/ocmdriver/1.0-r0 -fdebug-prefix-map=/home/lee/ljg/ka256/Antenna/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/ocmdriver/1.0-r0/recipe-sysroot-native= -fdebug-prefix-map=/home/lee/ljg/ka256/Antenna/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/ocmdriver/1.0-r0/recipe-sysroot= " export TARGET_LDFLAGS="-Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed" export TERM="xterm-256color" export TZ="UTC" export UBOOT_ARCH="arm" export USER="lee" export base_bindir="/bin" export base_libdir="/lib" export base_prefix="" export base_sbindir="/sbin" export bindir="/usr/bin" export datadir="/usr/share" export docdir="/usr/share/doc" export exec_prefix="/usr" export includedir="/usr/include" export infodir="/usr/share/info" export libdir="/usr/lib" export libexecdir="/usr/libexec" export localstatedir="/var" export mandir="/usr/share/man" export nonarch_base_libdir="/lib" export nonarch_libdir="/usr/lib" export oldincludedir="/usr/include" export prefix="/usr" export sbindir="/usr/sbin" export servicedir="/srv" export sharedstatedir="/com" export sysconfdir="/etc" export systemd_system_unitdir="/lib/systemd/system" export systemd_unitdir="/lib/systemd" export systemd_user_unitdir="/usr/lib/systemd/user" do_compile() { module_do_compile } module_do_compile() { unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS oe_runmake KERNEL_PATH=/home/lee/ljg/ka256/Antenna/build/tmp/work-shared/plnx-zynq7/kernel-source \ KERNEL_VERSION=4.14.0-xilinx-v2018.3 \ CC="arm-xilinx-linux-gnueabi-gcc -mno-thumb-interwork -marm -fuse-ld=bfd" LD="arm-xilinx-linux-gnueabi-ld.bfd " \ AR="arm-xilinx-linux-gnueabi-ar " \ O=/home/lee/ljg/ka256/Antenna/build/tmp/work-shared/plnx-zynq7/kernel-build-artifacts \ KBUILD_EXTRA_SYMBOLS="" \ ${MAKE_TARGETS} } oe_runmake() { oe_runmake_call "$@" || die "oe_runmake failed" } die() { bbfatal_log "$*" } oe_runmake_call() { bbnote make -j 4 KERNEL_SRC=/home/lee/ljg/ka256/Antenna/build/tmp/work-shared/plnx-zynq7/kernel-source "$@" make -j 4 KERNEL_SRC=/home/lee/ljg/ka256/Antenna/build/tmp/work-shared/plnx-zynq7/kernel-source "$@" } bbnote() { if [ -p /home/lee/ljg/ka256/Antenna/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/ocmdriver/1.0-r0/temp/fifo.112939 ] ; then printf "%b\0" "bbnote $*" > /home/lee/ljg/ka256/Antenna/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/ocmdriver/1.0-r0/temp/fifo.112939 else echo "NOTE: $*" fi } bbfatal_log() { if [ -p /home/lee/ljg/ka256/Antenna/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/ocmdriver/1.0-r0/temp/fifo.112939 ] ; then printf "%b\0" "bbfatal_log $*" > /home/lee/ljg/ka256/Antenna/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/ocmdriver/1.0-r0/temp/fifo.112939 else echo "ERROR: $*" fi exit 1 } cd '/home/lee/ljg/ka256/Antenna/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/ocmdriver/1.0-r0' do_compile # cleanup ret=$? trap '' 0 exit $ret
10-29
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值