此BASH代码在命令行上有效,但当我将其移入脚本时无效

瑞安

我在CLI上建立了一个kludgey脚本,但无法成功移入文本文件。我知道它写得不好,但是我有兴趣解决我遇到的问题,而不是重写它。我想了解为什么我写得不好的代码在命令行执行时的行为与另存为文件时的行为不同。

我认为这与脚本中过早插补的内容有关,因为如果将单行版本替换为同一文件(不格式化),则会得到相同的输出。请注意下面的调试行以及它如何不打印。

脚本内容

#!/ bin / bash

totalNodes = 0#初始化和                                                                                     
echo -e“ ID \ t \ t \ tNODES”; #标题行                                                                                         
对于$(中的n2(#n2将使用节点数填充(将添加到totalNodes中))                         
    为$(中的n(#n是中间字符串)修饰Resource_list.nodes行(kludgy)                      
        为我在$(
            qstat | grep“ ef” | cut -f 1 -d'')#i获取ef队列行                                                
            回声“调试$ i”
            j = $(echo $ i | sed's /(\ d +)\ .. + / \ $ 1 /'); #j是实际ID                                                      
            qstat -f | grep -A43 $ j; #从qstat提取此作业ID的完整输出                      
        done | grep Resource_List.nodes)#关闭循环n的定义                                         
    做echo $ {n}; done | grep ppn)#通过循环关闭n2的定义                                        
   echo“ $ j $ {n2:0:1}”#输出行                                                              
   totalNodes = $((($ totalNodes + $ {n2:0:1}))#计数节点                                                           
完成
echo“在EF队列中运行的$ totalNodes个16个节点”

预期的输出(我在命令行中得到的):

身份证号码
2378512.yaddayadday-adm 4
2378512.yaddayadday-adm 4
2378512.yaddayadday-adm 4
2378512.yaddayadday-adm 2
EF队列中运行的14个节点(共16个)

脚本的当前输出

身份证号码
 4
 4
 4
 2
EF队列中运行的14个节点(共16个)

所以我很困惑如何获取正确的总数(这意味着正确定义了$ n2),但是我什至无法在带有打印的调试行(第8行)上打印$ i。

供参考,这里是单线。就像我说的那样,当在命令行上执行时这给出了上面显示的“期望的输出”,但是当我将其保存为文件而没有其他格式时,其输出与上面的代码块“脚本的内容”相同。

totalNodes = 0; echo -e“ ID \ t \ t \ tNODES”;对于$ 2中的n2(对于$中的n(对于$(qstat | grep“ ef” | cut -f 1 -d'')中的i); j = $(echo $ i | sed's /(\ d +)\ .. + / $ 1 /'); qstat -f | grep -A43 $ j; done | grep Resource_List.nodes);执行echo $ {n} ; done | grep ppn);回显“ $ j $ {n2:0:1}”; totalNodes = $((($ totalNodes + $ {n2:0:1}))); 完成;回显“在EF队列中运行的$ totalNodes个16个节点”
控制台盒

命令替换方法$()在子shell上运行命令,因此,如果在其中定义变量,则该变量的值将丢失到外部。

j=1
: "$(j=2)"
echo "$j" # => 1

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

此tar命令在命令行上有效,但在脚本中失败

来自分类Dev

!(*。sh)在命令行上有效,但在脚本中无效

来自分类Dev

为什么此命令在我的终端上有效,但在我的代码中无效?

来自分类Dev

代码在脚本编辑器中有效,但在从命令行运行时无效

来自分类Dev

Django自定义命令在命令行上有效,但在call_command上无效

来自分类Dev

脚本在 CodeCademy 中有效,但在命令行中无效

来自分类Dev

Python,代码在命令行中有效,但在尝试创建程序时无效,请

来自分类Dev

Linux。为什么我的 Linux 命令在终端上有效,但在脚本中无效

来自分类Dev

PHP连接到远程Parse MongoDB;cURL在命令行上有效,但PHP file_get_contents无效

来自分类Dev

PHP连接到远程Parse MongoDB;cURL在命令行上有效,但PHP file_get_contents无效

来自分类Dev

为什么此脚本可以从命令行运行,但是当我将其放入Windows批处理文件中时却不能运行?

来自分类Dev

命令在命令行上有效,但在批处理文件中失败

来自分类Dev

为什么此代码在我的测试服务器上有效,但在jsfiddle上无效?

来自分类Dev

当我尝试将其带入类时,有效的代码给出了错误

来自分类Dev

C ++程序在命令行上有效,但在Xcode上失败

来自分类Dev

从ImageMagick转换在命令行上有效,但不在本地主机上

来自分类Dev

历史命令在终端中有效,但作为bash脚本编写时无效

来自分类Dev

在命令行中运行命令有效,在 bat 中无效

来自分类Dev

Linux /为什么su命令在CMD上有效但在脚本上无效?

来自分类Dev

为什么此命令“google-auth”在终端中有效,但在 bash 脚本中无效?

来自分类Dev

为什么我的代码在jsfiddle上有效,但在我的HTML文件上却无效

来自分类Dev

git clone在git shell中有效,但在Windows命令行中无效

来自分类Dev

为什么命令行上的 wget 有效,而 file_get_contents 无效?

来自分类Dev

代码在JS小提琴上有效,但在我的网站上无效

来自分类Dev

代码在JS小提琴上有效,但在我的网站上无效

来自分类Dev

代码在小提琴上有效,但在执行/ show时无效

来自分类Dev

在命令行上解析有效,但在shell脚本中失败

来自分类Dev

如何有效地在bash命令行中移动?

来自分类Dev

为什么“ / usr / bin / env bash -x”仅在命令行中有效?

Related 相关文章

  1. 1

    此tar命令在命令行上有效,但在脚本中失败

  2. 2

    !(*。sh)在命令行上有效,但在脚本中无效

  3. 3

    为什么此命令在我的终端上有效,但在我的代码中无效?

  4. 4

    代码在脚本编辑器中有效,但在从命令行运行时无效

  5. 5

    Django自定义命令在命令行上有效,但在call_command上无效

  6. 6

    脚本在 CodeCademy 中有效,但在命令行中无效

  7. 7

    Python,代码在命令行中有效,但在尝试创建程序时无效,请

  8. 8

    Linux。为什么我的 Linux 命令在终端上有效,但在脚本中无效

  9. 9

    PHP连接到远程Parse MongoDB;cURL在命令行上有效,但PHP file_get_contents无效

  10. 10

    PHP连接到远程Parse MongoDB;cURL在命令行上有效,但PHP file_get_contents无效

  11. 11

    为什么此脚本可以从命令行运行,但是当我将其放入Windows批处理文件中时却不能运行?

  12. 12

    命令在命令行上有效,但在批处理文件中失败

  13. 13

    为什么此代码在我的测试服务器上有效,但在jsfiddle上无效?

  14. 14

    当我尝试将其带入类时,有效的代码给出了错误

  15. 15

    C ++程序在命令行上有效,但在Xcode上失败

  16. 16

    从ImageMagick转换在命令行上有效,但不在本地主机上

  17. 17

    历史命令在终端中有效,但作为bash脚本编写时无效

  18. 18

    在命令行中运行命令有效,在 bat 中无效

  19. 19

    Linux /为什么su命令在CMD上有效但在脚本上无效?

  20. 20

    为什么此命令“google-auth”在终端中有效,但在 bash 脚本中无效?

  21. 21

    为什么我的代码在jsfiddle上有效,但在我的HTML文件上却无效

  22. 22

    git clone在git shell中有效,但在Windows命令行中无效

  23. 23

    为什么命令行上的 wget 有效,而 file_get_contents 无效?

  24. 24

    代码在JS小提琴上有效,但在我的网站上无效

  25. 25

    代码在JS小提琴上有效,但在我的网站上无效

  26. 26

    代码在小提琴上有效,但在执行/ show时无效

  27. 27

    在命令行上解析有效,但在shell脚本中失败

  28. 28

    如何有效地在bash命令行中移动?

  29. 29

    为什么“ / usr / bin / env bash -x”仅在命令行中有效?

热门标签

归档