如何将awk变量传递给bash循环

埃舍尔

我正在awk中处理一个csv文件。在脚本执行期间,我需要退出awk一段时间,然后根据csv文件中处理的awk信息在bash shell中进行一些ImageMagick处理。我正在尝试在外壳中执行此图像处理,因为我遍历了指定目录中的所有jpg文件。我的问题是双重的:

  1. 如何将变量从awk传递到bash,以便可以执行此操作?(这是$imageDirectory$productRef下面的代码)
  2. 我正在尝试避免使用多种system(someImageMagicCommand)类型的代码,因为看起来我正在尝试使用awk来完成其设计目的。有没有更好的方法?

这是伪代码示例,用于说明我正在尝试实现的目标:

    #blah blah blah awk code
    #leave awk interpreter, go into bash
    '
    resizesize="200x200";
    #concatenate with *.jpg suffix for listing all the jpg files in the imageDirectory
    imageDirectoryWithSuffix="$imageDirectory/*.jpg";
    for i in `ls $imageDirectoryWithSuffix`
    do
            #imageMagick converts large images to thumbnails
            convert $i $resizeSize -otherFlagsEtc assets/$productRef/thumbs/$i
    done
    '#back into awk, more csv processing now...

澄清上下文:我有一个包含产品信息和相关文件路径的CSV文件(每行1个产品)。我正在尝试自动创建有关产品的网页。其中一部分涉及调整图像目录的大小,其位置在csv文件中作为字段给出。因此,在脚本的部分过程中,我试图离开awk解释器,调用ImageMagick调整大小,然后返回csv文件中同一记录的awk解释器并继续输出HTML文件。

在我进入ImageMagick部分之前,大约有100行(长)脚本代码,而在此之后又有100行,因此基于@Bushmills的回答,我认为最好的方法是将bash中需要的awk变量写到一个小临时文件中。文件,然后退出awk并从bash中读取临时文件。但是,如何重新调用awk并使其从停止的同一条记录开始读取?还是我只需要呆在awk中并使用system()电话?for在awksystem()函数中包装整个bash循环似乎并不明智,但我想不出一种在整个文件目录上调用ImageMagick的更优雅的方式。

马克·谢切尔

Fifo可能是您进行下一步的好方法。基本想法是,您awk在ImageMagick内容中创建一个隧道,然后将请求awk通过该隧道传递到ImageMagick。

因此,您的主要脚本可以做到这一点:

#!/bin/bash
...
mkfifo tunnel
ImageMagickScript &
...
awk '{...
      ...
      print directory size> "tunnel"
      ...
      ... } file
...
wait # for ImageMagick script that we started to finish

您的ImageMagick脚本可以做到这一点

#!/bin/bash
while read directory size
do
    convert ... $directory $size ...
done < tunnel

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将bash变量传递给awk脚本

来自分类Dev

如何将起始变量传递给for循环,BASH

来自分类Dev

通过管道将 bash 循环变量传递给 AWK

来自分类Dev

如何将变量从awk传递给shell命令?

来自分类Dev

如何将shell变量传递给awk搜索模式?

来自分类Dev

如何将变量从外循环传递给函数

来自分类Dev

Bash和AWK-在进行多行模式数学运算时如何将变量传递给AWK?

来自分类Dev

Bash和AWK-在进行多行模式数学运算时如何将变量传递给AWK?

来自分类Dev

如何将 bash 变量传递给 PSQL 函数体?

来自分类Dev

如何将python变量传递给bash脚本?

来自分类Dev

如何将变量传递给 Python 中的 bash 命令

来自分类Dev

将bash变量传递给awk

来自分类Dev

如何将awk输出传递到bash变量中?

来自分类Dev

如何将变量传递给$ timeout

来自分类Dev

如何将变量传递给cpack?

来自分类Dev

如何将变量传递给getattr

来自分类Dev

如何将变量传递给setInterval?

来自分类Dev

如何将变量传递给函数

来自分类Dev

将变量传递给 AWK 在循环内不起作用

来自分类常见问题

如何在循环时将输入传递给Bash并在循环结束后保留变量

来自分类Dev

如何将字符串变量作为参数传递给awk

来自分类Dev

将bash变量作为模式传递给awk

来自分类Dev

Bash将键盘输入变量传递给AWK

来自分类Dev

将Bash Shell变量传递给Awk NR函数

来自分类Dev

Grails异步Promise / for循环错误-如何将变量传递给任务关闭

来自分类Dev

如何将foreach循环变量传递给JSP中的URL解码器?

来自分类Dev

如何将foreach循环变量传递给JSP中的URL解码器?

来自分类Dev

如何在没有for循环的情况下将参数传递给Bash脚本变量?

来自分类Dev

如何将空变量传递给bash函数并将其实际计为参数?

Related 相关文章

  1. 1

    如何将bash变量传递给awk脚本

  2. 2

    如何将起始变量传递给for循环,BASH

  3. 3

    通过管道将 bash 循环变量传递给 AWK

  4. 4

    如何将变量从awk传递给shell命令?

  5. 5

    如何将shell变量传递给awk搜索模式?

  6. 6

    如何将变量从外循环传递给函数

  7. 7

    Bash和AWK-在进行多行模式数学运算时如何将变量传递给AWK?

  8. 8

    Bash和AWK-在进行多行模式数学运算时如何将变量传递给AWK?

  9. 9

    如何将 bash 变量传递给 PSQL 函数体?

  10. 10

    如何将python变量传递给bash脚本?

  11. 11

    如何将变量传递给 Python 中的 bash 命令

  12. 12

    将bash变量传递给awk

  13. 13

    如何将awk输出传递到bash变量中?

  14. 14

    如何将变量传递给$ timeout

  15. 15

    如何将变量传递给cpack?

  16. 16

    如何将变量传递给getattr

  17. 17

    如何将变量传递给setInterval?

  18. 18

    如何将变量传递给函数

  19. 19

    将变量传递给 AWK 在循环内不起作用

  20. 20

    如何在循环时将输入传递给Bash并在循环结束后保留变量

  21. 21

    如何将字符串变量作为参数传递给awk

  22. 22

    将bash变量作为模式传递给awk

  23. 23

    Bash将键盘输入变量传递给AWK

  24. 24

    将Bash Shell变量传递给Awk NR函数

  25. 25

    Grails异步Promise / for循环错误-如何将变量传递给任务关闭

  26. 26

    如何将foreach循环变量传递给JSP中的URL解码器?

  27. 27

    如何将foreach循环变量传递给JSP中的URL解码器?

  28. 28

    如何在没有for循环的情况下将参数传递给Bash脚本变量?

  29. 29

    如何将空变量传递给bash函数并将其实际计为参数?

热门标签

归档