Shell 什么是[";$var";]&$你怎么办?

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”]做什么?它有什么用处吗

我正在浏览一个代码库,在一个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”]
做什么?它有什么用处吗?或者这只是写错了什么?我能想到的唯一一件事是,在运行该文件之前,它应该是
[-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
在最终使用时也应该引用,这与原始代码段不同。