Bash - 使用文本文件中的行运行命令

标签 bash variables loops

我对 bash 脚本有点陌生,无法找到我要问的问题的答案,如果可能的话。

我有一个文本文件,它是通过使用 grep 搜索包含“名称”的文件的目录创建的,并输出以下内容,假设该文件名为 PathOutput.txt

/mnt/volnfs3rvdata/4007dc45-477a-45b2-9c28-43bc5bbb4f9f/master/vms/4c3483af-b41a-4979-98b7-6f6a4f147670/4c3483af-b41a-4979-98b7-6f6a4f147670.ovf

/mnt/volnfs3rvdata/4007dc45-477a-45b2-9c28-43bc5bbb4f9f/master/vms/5b5538a5-423f-4eaf-9678-d377a6706c58/5b5538a5-423f-4eaf-9678-d377a6706c58.ovf

/mnt/volnfs3rvdata/4007dc45-477a-45b2-9c28-43bc5bbb4f9f/master/vms/0e2d1451-45cc-456e-846d-d174515a60dd/0e2d1451-45cc-456e-846d-d174515a60dd.ovf

/mnt/volnfs3rvdata/4007dc45-477a-45b2-9c28-43bc5bbb4f9f/master/vms/daaf622e-e035-4c1b-a6d7-8ee209c4ded6/daaf622e-e035-4c1b-a6d7-8ee209c4ded6.ovf

/mnt/volnfs3rvdata/4007dc45-477a-45b2-9c28-43bc5bbb4f9f/master/vms/48f52ab9-64df-4b1e-9c35-c024ae2a64c4/48f52ab9-64df-4b1e-9c35-c024ae2a64c4.ovf

现在,如果可能的话,我想做的是使用命令循环遍历文件,使用变量引入文本文件中的每一行。但是我无法找到一种方法来在每一行中再次运行命令。通过我所有的尝试,我确实得到了一个结果,它会针对第一行运行一次,但这是 grep 的输出被输送到另一个命令的时候。

目前在 bash 脚本中,我只是将路径提取到 PathOutput.txt,cat 以显示路径,然后将我想要的路径复制到 read -p 命令以创建一个变量以针对命令运行。它现在工作正常,只需要每次为每个路径运行脚本。如果我可以让命令循环遍历每一行,我可以将结果输出到一个 txt 文件。

这可能吗?

最佳答案

你可以使用xargs:

$ xargs -n1 echo "arg:" < file
arg: /mnt/volnfs3rvdata/4007dc45-477a-45b2-9c28-43bc5bbb4f9f/master/vms/4c3483af-b41a-4979-98b7-6f6a4f147670/4c3483af-b41a-4979-98b7-6f6a4f147670.ovf
arg: /mnt/volnfs3rvdata/4007dc45-477a-45b2-9c28-43bc5bbb4f9f/master/vms/5b5538a5-423f-4eaf-9678-d377a6706c58/5b5538a5-423f-4eaf-9678-d377a6706c58.ovf
arg: /mnt/volnfs3rvdata/4007dc45-477a-45b2-9c28-43bc5bbb4f9f/master/vms/0e2d1451-45cc-456e-846d-d174515a60dd/0e2d1451-45cc-456e-846d-d174515a60dd.ovf
arg: /mnt/volnfs3rvdata/4007dc45-477a-45b2-9c28-43bc5bbb4f9f/master/vms/daaf622e-e035-4c1b-a6d7-8ee209c4ded6/daaf622e-e035-4c1b-a6d7-8ee209c4ded6.ovf
arg: /mnt/volnfs3rvdata/4007dc45-477a-45b2-9c28-43bc5bbb4f9f/master/vms/48f52ab9-64df-4b1e-9c35-c024ae2a64c4/48f52ab9-64df-4b1e-9c35-c024ae2a64c4.ovf

只需将 echo "arg:" 替换为您实际想要使用的命令即可。如果您想一次传递所有文件,请删除 -n1 选项。

关于Bash - 使用文本文件中的行运行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14955508/

相关文章:

bash - 获取字符串的一部分然后更新它

c - 如何使用C程序处理多个文件

c - Bash 路径变量,权限被拒绝

variables - Date 变量类型的默认值是否有 const,字符串类型有 vbNullString 的默认值?

Python:如何在另一个函数中使用一个函数中的变量

python - 这段 python 代码有什么问题吗?输入后出现错误

python - 从另一个字典列表中减去字典列表中的值

bash - Unix shell 之间的可移植性——我对这个问题的思考是否正确?

c++ - 算法循环组合

python - 如何从文件中打印单行