在cygwin下xargs -I%命令-option1%-option2%

问题描述 投票:0回答:1

我从这个问题的答案中学到了:Making xargs work in Cygwin那个选项xargs -I在Cygwin下不能正常工作。有一些解决方法,但不幸的是,它对我的​​情况没有帮助。

我的问题是,我如何处理相同的结果:

..somthing that produces multiple lines.. | xargs -I % command -option1 % -option2 %

在Cygwin环境下?

编辑:

为了澄清,我想从stdin获取一些值并调用“命令”,将它们作为参数“%”放入两个位置。我想对“某事”产生的数据多次调用我的命令。

示例1 :(我没有在cpp中编程很长时间所以请原谅我的错误)

find -name *.cpp | cut -d. -f1 | xargs -I % gcc -o %.o -I %.h %.cpp

例2:

cat songs_to_process.txt | xargs -I % convert --format=mp3 --source=%.avi --output=%.mp3
bash cygwin xargs
1个回答
2
投票

你根本不需要xargs这个工作 - 不是你的任何例子。

find . -name '*.cpp' -print0 | while IFS= read -r -d '' filename; do
  basename=${filename%.*}
  gcc -o "${basename}.o" -I "${basename}.h" "${basename}.cpp"
done

...要么:

while IFS= read -r song; do
    song=${song%$'\r'} # repair if your input file is in DOS (CRLF) format
    convert --format=mp3 --source="$song".avi --output="$song".mp3
done <songs_to_process.txt

有关在bash中逐行处理输入的最佳实践的介绍,请参阅BashFAQ #1

© www.soinside.com 2019 - 2024. All rights reserved.