Shell 什么是[";$var";]&$你怎么办?
我正在浏览一个代码库,在一个shell脚本中遇到了以下代码:Shell 什么是[";$var";]&$你怎么办?,shell,sh,Shell,Sh,我正在浏览一个代码库,在一个shell脚本中遇到了以下代码: ./some_script.sh errcode=$? if [ "$errcode" != 0 ]; then [ "$SCRIPT_PATH" ] && $SCRIPT_PATH do_something fi SCRIPT\u PATH是一个环境变量,它扩展到脚本的路径(例如/usr/bin/abc.sh)。但是,我不理解if循环中的代码的作用。[“$SCRIPT\u PATH”]做什么?它有什么用处吗
./some_script.sh
errcode=$?
if [ "$errcode" != 0 ]; then
[ "$SCRIPT_PATH" ] && $SCRIPT_PATH do_something
fi
SCRIPT\u PATH
是一个环境变量,它扩展到脚本的路径(例如/usr/bin/abc.sh
)。但是,我不理解if循环中的代码的作用。[“$SCRIPT\u PATH”]
做什么?它有什么用处吗?或者这只是写错了什么?我能想到的唯一一件事是,在运行该文件之前,它应该是[-f“$SCRIPT\u PATH”]
来检查该文件是否存在,但我不再确定
知道它还能做什么吗?如果它不是空的或未设置的(因为这是
[one_arg]
测试所做的),它会在脚本路径中运行程序。这是以下内容的简写:
if [ "$errcode" != 0 ]; then
if [ "$SCRIPT_PATH" ]; then
$SCRIPT_PATH do_something
fi
fi
它的工作原理是在if
语句中滥用链接条件“短路”的方式
这是否是一个好主意……值得商榷。请注意,这是一种非常幼稚的方法。最好使用[-x“$SCRIPT\u PATH”]
来测试脚本是否存在,并且脚本是否可执行。这是一条很有价值的建议。$SCRIPT\u PATH
在最终使用时也应该引用,这与原始代码段不同。