【问题标题】:Run multiple tools as single bash script将多个工具作为单个 bash 脚本运行
【发布时间】:2015-09-22 13:35:10
【问题描述】:

我正在孤立地做不同的程序。假设一个命令行参数用于 C++ 工具,另一个用于 R。但起初我为 C++ 应用程序运行命令行参数,这会给我一个结果文件。只有这样我才能为 R 应用程序运行另一个命令行,该命令行需要来自 C++ 应用程序的结果文件。

我可能有许多不同的数据需要处理。有什么方法可以制作一个 bash 脚本以允许循环不同的工具(C++、R、任何其他工具)?所以我就坐下来,不用手动写很多命令行参数?

我想睡觉,而一个耗时的循环正在我的计算机中发出噪音。

【问题讨论】:

  • 当然,在没有用户交互的情况下运行多个命令是脚本的基本思想。这就是术语的来源。是什么阻止了你?

标签: c++ r bash terminal


【解决方案1】:

以某种定义的顺序运行多个不同的程序是 bash 等(系统)脚本语言的基本思想:

## run those three programms in sequence
first argument
second parameter
third
# same as
first argument; second parameter; third

你可以做很多花哨的事情,比如重定向输入和输出流:

grep secret secrets.file | grep -V strong | sort > result.file
# pipe | feeds everything from the standard output
# of the programm on the left into
# the standard input of the one on the right

这还包括条件语句,当然还有循环:

while IFS= read -r -d '' file; do
  preprocess "$file"
  some_work | generate "$file.output"
done < <(find ./data -type f -name 'source*' -print0)

如您所见,bash 本身就是一种编程语言,恕我直言,它的语法有点奇怪。

【讨论】:

  • 这很好,例如我不擅长 bash。您能说一下如何在不先进入 R 解释器的情况下在终端中运行 R 脚本吗?喜欢R myscript.R 吗?它刚刚进入 R 解释器,如果终端从普通的 unix 终端切换到 R 解释器,我的其他 C++ 工具将无法运行。
  • 这取决于解释器,它有某种批处理模式吗?
  • 谢谢。作品。但是,我对三个不同的程序有复杂的循环(也为不同的参数在一个程序中循环)..循环循环..如果它不起作用,我会阅读教程并返回。
猜你喜欢
  • 2017-12-12
  • 2023-01-13
  • 2013-09-13
  • 2012-11-21
  • 2013-08-14
  • 1970-01-01
  • 2021-11-30
  • 2015-12-26
  • 2018-11-26
相关资源
最近更新 更多