Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Bash one liner—测试文件是否存在,如果存在源文件,则测试其他文件是否存在,并返回错误_Php_Bash_Testing - Fatal编程技术网

Php Bash one liner—测试文件是否存在,如果存在源文件,则测试其他文件是否存在,并返回错误

Php Bash one liner—测试文件是否存在,如果存在源文件,则测试其他文件是否存在,并返回错误,php,bash,testing,Php,Bash,Testing,换句话说,我想把它做成一行: test -e ${MY_HOME}/setup-env.sh || { echo "ERROR: MY_HOME not defined or does not contain srtup-env.sh" 1>&2 ; exit 1; } . ${MY_HOME}/setup-env.sh 您可以使用这一行: [[ -e "${MY_HOME}/setup-env.sh" ]] && source "${MY_HO

换句话说,我想把它做成一行:

    test -e ${MY_HOME}/setup-env.sh || { echo "ERROR: MY_HOME not defined or does not contain srtup-env.sh" 1>&2 ; exit 1; }

    . ${MY_HOME}/setup-env.sh

您可以使用这一行:

[[ -e "${MY_HOME}/setup-env.sh" ]] && source "${MY_HOME}/setup-env.sh" || { echo "ERROR: MY_HOME not defined or does not contain srtup-env.sh" 1>&2 ; exit 1; }
或者,如果不是bash:

test -e "${MY_HOME}/setup-env.sh" && { . "${MY_HOME}/setup-env.sh"; exit; }; echo "ERROR: MY_HOME not defined or does not contain setup-env.sh" >&2; exit 1

对我来说,它实际上不是一个“一行程序”,而是一个浓缩的形式。

如果
source“${MY_HOME}/setup env.sh”
以非零状态代码结尾,那么它也会运行消息。是的,这是一个很好的观点,我认为这是在一行中完成这一切的陷阱。显然,
source“${MY_HOME}/setup env.sh”
不能在子shell中完成。可以在一行中完成,但为什么要这样做?使用函数进行此操作将更易于阅读,并且每次使用时只需要很少的键入。对我来说,真正的一行程序是那些通过一个不间断的命令实例来完成所需任务的程序。我看到那些使用分隔符的,比如
不符合这样调用的条件。
test -e "${MY_HOME}/setup-env.sh" && { . "${MY_HOME}/setup-env.sh"; exit; }; echo "ERROR: MY_HOME not defined or does not contain setup-env.sh" >&2; exit 1