Bash-从TXT读取目录路径,追加可执行文件,然后执行

瑞安(Ryan S)

我正在建立一个目录结构,其中包含许多不同的R&bash脚本。它们都将引用文件和文件夹。与其对路径进行硬编码,我希望有一个文本文件,其中每个脚本都可以在文件中搜索描述符(请参见下文)并从中读取相关路径。

对我来说,让搜索附件在R中工作很容易;由于我不太了解该语言,因此无法在Bash中使用它。

我的猜测是它与awk工作/存储变量的方式有关,或者/与awk输出工作方式有关。但是我对它还不够熟悉,非常感谢您的帮助

文本文件“ Master_File.txt”:

NOT_DIRECTORY "/file/paths/Fake"
JOB_TEST_DIRECTORY "/file/paths/Real"
ALSO_NOT_DIRECTORY "/file/paths/Fake"

Bash脚本:

#! /bin/bash

master_file_name="Master_File.txt"
R_SCRIPT="RScript.R"
SRCPATH=$(awk '/JOB_TEST_DIRECTORY/ { print $2 }' $master_file_name)
Rscript --vanilla $SRCPATH/$R_SCRIPT

最后一行$SRCPATH/$R_SCRIPT似乎SRCPath用的名称代替了的名称,$R_SCRIPT名称的输出类似于/RScript.Rs/Real而不是我想要的名称/file/paths/Real/RScript.R

注意:如果我对路径path="/file/paths/Real"进行硬编码,那么代码将$path/$R_SCRIPT输出我想要的内容。

R脚本:

system(command = "echo \"SUCCESSFUL_RUN\"", intern = FALSE, wait = TRUE)

q("no")

请让我知道是否还有其他有用的信息,我添加了所有我能想到的信息。谢谢你

答案编辑:

我找到了两种解决方案。

解决方案1-通过闪电:

[请参阅下面的答案]

解决方案2-我对Mheni的回答的改编:

在看到Mehni关于忽略"引号的注释后,我查找了更多内容,发现可以更改awk用于确定文本分隔位置的字符。通过将a添加-F\"awk呼叫中,它会根据"字符成功分离

以下作品

#!/bin/bash

master_file_name="Master_File.txt"
R_SCRIPT="RScript.R"
SRCPATH=$(awk -F\" -v r_script=$R_SCRIPT '/JOB_TEST_DIRECTORY/ { print $2 }' $master_file_name)

Rscript --vanilla $SRCPATH/$R_SCRIPT

非常感谢大家花时间帮助我。对此,我真的非常感激。

雷电

问题是由于路径两边的引号引起的,对awk命令的此更改在打印路径时将其忽略。

如@david所述,shebang行中还有一个不应存在的空间

#!/bin/bash

master_file_name="/tmp/data"
R_SCRIPT="RScript.R"
SRCPATH=$(awk '/JOB_TEST_DIRECTORY/ { if(NR==2) { gsub("\"",""); print $2 } }' "$master_file_name")
echo "$SRCPATH/$R_SCRIPT"

输出

[1] "Hello World!"

在我的示例中,路径在 /tmp/data

NOT_DIRECTORY "/tmp/file/paths/Fake"
JOB_TEST_DIRECTORY "/tmp/file/paths/Real"
ALSO_NOT_DIRECTORY "/tmp/file/paths/Fake"

并在与JOB_TEST_DIRECTORY相对应的路径中有一个简单的hello_world R脚本

[user@host tmp]$ cat /tmp/file/paths/Real/RScript.R
print("Hello World!")

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Bash-从TXT读取目录路径,追加可执行文件,然后执行

来自分类Dev

Bash脚本查找可执行文件的路径

来自分类Dev

如何清除Bash可执行文件路径的缓存?

来自分类Dev

“ bash可执行文件”和“ bash -c可执行文件”之间的区别

来自分类Dev

如何为路径上的所有可执行文件编写bash完成脚本?

来自分类Dev

Bash记住了被移动/删除的可执行文件的错误路径

来自分类Dev

如果路径上存在bash脚本,则使用它,否则使用可执行文件

来自分类Dev

bash: ./*.exe: 没有名为 *.exe 的可执行文件或目录

来自分类Dev

将变量从bash传递到可执行文件(使用stdin读取参数)

来自分类Dev

Bash:在后台运行可执行文件

来自分类Dev

在bash中启动的可执行文件顺序

来自分类Dev

Bash是否具有可执行文件缓存?

来自分类Dev

bash:./a.out:ld产生的运行可执行文件上没有这样的文件或目录

来自分类Dev

启用Bash-Completion以将超级用户可执行文件扩展到完整路径

来自分类Dev

Linux:/ proc / <PID> / exe返回可执行文件'/ bin / bash'的路径,用于位于'/ home / <USER> / new / v'的进程

来自分类Dev

有什么方法可以使bash搜索子目录以找到可执行文件吗?

来自分类Dev

为什么在bash REPL中运行`echo $ 0`仅返回bash可执行文件的名称,而在zsh中返回zsh可执行文件的绝对路径?

来自分类Dev

Linux / bash无法执行“哪个”告诉我的可执行文件

来自分类Dev

bash文件包含可执行文件/二进制代码

来自分类Dev

bash管道-如果第一个可执行文件退出,所有下游可执行文件都会退出吗?

来自分类Dev

包含二进制可执行文件的Bash脚本

来自分类Dev

如何将bash变量重定向到可执行文件?

来自分类Dev

为什么Git Bash无法运行我的可执行文件?

来自分类Dev

bash-使用递归-计算dir中的可执行文件

来自分类Dev

您可以对签名可执行文件(例如bash脚本)进行编码吗?

来自分类Dev

如何从WSL(Ubuntu)Bash运行Windows可执行文件

来自分类Dev

仅对bash shell中特定组中的用户可执行文件

来自分类Dev

在git-bash中运行Perl可执行文件

来自分类Dev

使用bash脚本在多个内核上运行可执行文件

Related 相关文章

  1. 1

    Bash-从TXT读取目录路径,追加可执行文件,然后执行

  2. 2

    Bash脚本查找可执行文件的路径

  3. 3

    如何清除Bash可执行文件路径的缓存?

  4. 4

    “ bash可执行文件”和“ bash -c可执行文件”之间的区别

  5. 5

    如何为路径上的所有可执行文件编写bash完成脚本?

  6. 6

    Bash记住了被移动/删除的可执行文件的错误路径

  7. 7

    如果路径上存在bash脚本,则使用它,否则使用可执行文件

  8. 8

    bash: ./*.exe: 没有名为 *.exe 的可执行文件或目录

  9. 9

    将变量从bash传递到可执行文件(使用stdin读取参数)

  10. 10

    Bash:在后台运行可执行文件

  11. 11

    在bash中启动的可执行文件顺序

  12. 12

    Bash是否具有可执行文件缓存?

  13. 13

    bash:./a.out:ld产生的运行可执行文件上没有这样的文件或目录

  14. 14

    启用Bash-Completion以将超级用户可执行文件扩展到完整路径

  15. 15

    Linux:/ proc / <PID> / exe返回可执行文件'/ bin / bash'的路径,用于位于'/ home / <USER> / new / v'的进程

  16. 16

    有什么方法可以使bash搜索子目录以找到可执行文件吗?

  17. 17

    为什么在bash REPL中运行`echo $ 0`仅返回bash可执行文件的名称,而在zsh中返回zsh可执行文件的绝对路径?

  18. 18

    Linux / bash无法执行“哪个”告诉我的可执行文件

  19. 19

    bash文件包含可执行文件/二进制代码

  20. 20

    bash管道-如果第一个可执行文件退出,所有下游可执行文件都会退出吗?

  21. 21

    包含二进制可执行文件的Bash脚本

  22. 22

    如何将bash变量重定向到可执行文件?

  23. 23

    为什么Git Bash无法运行我的可执行文件?

  24. 24

    bash-使用递归-计算dir中的可执行文件

  25. 25

    您可以对签名可执行文件(例如bash脚本)进行编码吗?

  26. 26

    如何从WSL(Ubuntu)Bash运行Windows可执行文件

  27. 27

    仅对bash shell中特定组中的用户可执行文件

  28. 28

    在git-bash中运行Perl可执行文件

  29. 29

    使用bash脚本在多个内核上运行可执行文件

热门标签

归档