如何从 stdout 传递值作为下一个命令的参数
how to pass values from stdout as parameter for the next command
我想 svn blame 包含 "todo | fixme" 的代码行
我有脚本的一般流程,但很难将其组合成一个
找到 "todo"
的行
grep --color -Ern --include=*.{php,html,phtml} --exclude-dir=vendor "todo|TODO|FIXME" .
怪那行代码
svn blame ${file} | cat -n |grep ${linenumber}
我可以使用 awk 从第一个命令中获取 $file 和 $linenumber,但我不知道如何将使用 awk 提取的值通过管道传输到第二个命令中。
我缺少将这些命令组合成一个命令的粘合剂 "script" (- :
您可以使用 awk
构建命令,然后将其通过管道传输到 bash
:
grep --color -Ern --include=*.{php,html,phtml} --exclude-dir=vendor "todo|TODO|FIXME" . |\
awk -F: '{printf "svn blame \"%s\" | cat -n | grep \"%s\"\n", , }'
每个输入行打印一个命令,格式如下:
svn blame "${file}" | cat -n | grep "${linenumber}"
变量被替换。当你执行上面的命令时,它们只会打印到 shell,你可以确认一切是否正确。如果是,将最后一个管道添加到输出重定向到 bash
的命令的输入。完整的命令如下所示:
grep --color -Ern --include=*.{php,html,phtml} --exclude-dir=vendor "todo|TODO|FIXME" . |\
awk -F: '{printf "svn blame \"%s\" | cat -n | grep \"%s\"\n", , }' | bash
一个小通知:我想你想在第一个命令中打印行号提取器,是吗?但是 grep ${linenumber}
只是给出包含 字符串 ${linenumber}
的行 。要仅打印行号,请使用该命令:sed -n "2p"
例如打印行号 2。完整的命令将如下所示:
grep --color -Ern --include=*.{php,html,phtml} --exclude-dir=vendor "todo|TODO|FIXME" . |\
awk -F: '{printf "svn blame \"%s\" | cat -n | sed -n \"%sp\"\n", , }' | bash
我想 svn blame 包含 "todo | fixme" 的代码行 我有脚本的一般流程,但很难将其组合成一个
找到 "todo"
的行grep --color -Ern --include=*.{php,html,phtml} --exclude-dir=vendor "todo|TODO|FIXME" .
怪那行代码
svn blame ${file} | cat -n |grep ${linenumber}
我可以使用 awk 从第一个命令中获取 $file 和 $linenumber,但我不知道如何将使用 awk 提取的值通过管道传输到第二个命令中。
我缺少将这些命令组合成一个命令的粘合剂 "script" (- :
您可以使用 awk
构建命令,然后将其通过管道传输到 bash
:
grep --color -Ern --include=*.{php,html,phtml} --exclude-dir=vendor "todo|TODO|FIXME" . |\
awk -F: '{printf "svn blame \"%s\" | cat -n | grep \"%s\"\n", , }'
每个输入行打印一个命令,格式如下:
svn blame "${file}" | cat -n | grep "${linenumber}"
变量被替换。当你执行上面的命令时,它们只会打印到 shell,你可以确认一切是否正确。如果是,将最后一个管道添加到输出重定向到 bash
的命令的输入。完整的命令如下所示:
grep --color -Ern --include=*.{php,html,phtml} --exclude-dir=vendor "todo|TODO|FIXME" . |\
awk -F: '{printf "svn blame \"%s\" | cat -n | grep \"%s\"\n", , }' | bash
一个小通知:我想你想在第一个命令中打印行号提取器,是吗?但是 grep ${linenumber}
只是给出包含 字符串 ${linenumber}
的行 。要仅打印行号,请使用该命令:sed -n "2p"
例如打印行号 2。完整的命令将如下所示:
grep --color -Ern --include=*.{php,html,phtml} --exclude-dir=vendor "todo|TODO|FIXME" . |\
awk -F: '{printf "svn blame \"%s\" | cat -n | sed -n \"%sp\"\n", , }' | bash