我必须获取一个 tcsh 脚本来修改环境变量。
需要进行一些测试,如果任何测试失败,采购将停止而不退出外壳。我不想将脚本作为子进程运行,因为我需要在父进程中修改子进程无法执行的环境变量。这与作者实际上可以将脚本作为子进程运行的这个问题相似但不同。
通常的解决方法是创建一个运行脚本 (csh/bash/perl/python/...) 的别名,该脚本使用所有 env var 设置写入一个临时文件,并在最后源并删除该临时文件。这里有更多信息供感兴趣的人使用(演示 bash 的解决方案)。对于我非常简单和简短的东西,我不需要额外的别名。
所以我的解决方法是引发语法错误,停止任何source
执行。这是一个例子:
test $ADMIN_USER = `filetest -U: $SOME_FILE` || "Error: Admin user must own admin file"
在好的情况下,短路||
会导致错误文本被忽略。在测试失败时,错误文本被解释为命令,未找到,源停止并产生合理的错误消息:
Error: Admin user must own admin file: Command not found.
有没有更好的方法来做到这一点?我忽略了一些内置的 csh/tcsh?