我有一个脚本(例如Task.sh
)(具有可执行权限):
伪代码:
if [[ Not called from inside a script ]]; then
echo 'Not called from inside a script'
else
echo 'Called from a script'
fi
我有一个脚本Main.sh
(具有可执行权限):
Value=$(Task.sh)
echo "${Value}"
预期结果
$ Task.sh
Not called from inside a script
$ Main.sh
Called from a script
帮助请求
请建议在伪代码中添加什么条件Task.sh
一种选择是将要求从“我在脚本中运行吗? ”稍微更改为“我是否连接到终端或管道/文件? ”。这将允许以下情况
Task.sh >/tmp/file
:它不是从脚本调用的,但它似乎应该写入文件而不是剪贴板。如果这是可以接受的,那么您可以对连接到终端的标准输出使用简单的测试:
工具的使用方式
ls
和tty
操作方式都不同,具体取决于其使用情况,使用非常相似的方法。例如,在具有多个条目的目录中对比ls
和ls | cat
使用工具将某些内容复制到剪贴板似乎很少见,因此最好明确说明并仅在被要求时才执行。
因此,一种选择是脚本检查要求使用剪贴板的命令行参数,否则默认打印到标准输出。
如果您不在脚本中使用命令行参数,那么它就像以下一样简单:
getopt
或者如果您使用命令行参数,则将其包含在您的(s) 循环中。这意味着交互式用户需要记住添加该选项,但他们只需在其
.bashrc
或等效项中安装一个别名即可: