pau*_*ulj 4 bash xargs arguments
我有一个脚本。myScript
.
它需要两个参数。myScript arg1 arg2
.
假设我有三组论点。
argA1 argB1
argA2 argB2
argA3 argB3
Run Code Online (Sandbox Code Playgroud)
有没有办法将每一行通过管道传输到 myScript。我愿意在文件中包含一组 args,也许可以使用 xargs。不确定要调查什么。
所以我会像下面的假例子一样运行命令:
cat myFile | xargs > myScript
Run Code Online (Sandbox Code Playgroud)
不要有另一个脚本,只是命令行上的命令。
Sté*_*las 10
只是:
xargs -l1 <myFile myScript
Run Code Online (Sandbox Code Playgroud)
-l1
告诉每个输入的 inexargs
运行myScript
一次,该1
l
ine 上的单词1
l
作为单独的参数传递。
对于xargs
,单词用空格分隔,并且您仍然可以通过使用引号在单词中包含空格(甚至换行符)。但是请注意,虽然xargs
支持"..."
,'...'
并且\
像大多数 shell 一样引用,但它的解析与类 Bourne 的 shell 不同。特别是,在也"..."
没有'...'
并且只能\
转义换行符中没有反斜杠处理。
例如,myFile
可以包含:
word1.1 word1.2
"word 2.1" 'word 2.2'
"word'3.1" 'word"3.2'
'word"'"4'1" word\"4\'2
'word '\
5.1 "word "\
5.2
Run Code Online (Sandbox Code Playgroud)
和
xargs -l1 <myFile printf 'First word: "%s", second word: "%s"\n'
Run Code Online (Sandbox Code Playgroud)
会产生:
First word: "word1.1", second word: "word1.2"
First word: "word 2.1", second word: "word 2.2"
First word: "word'3.1", second word: "word"3.2"
First word: "word"4'1", second word: "word"4'2"
First word: "word
5.1", second word: "word
5.2"
Run Code Online (Sandbox Code Playgroud)
通过 GNU 实现xargs
,您可以将其改进为:
xargs -l1 -r -a myFile myScript
Run Code Online (Sandbox Code Playgroud)
这样做的好处是可以单独使用 stdin 并且myScript
如果myFile
为空则不运行。
归档时间: |
|
查看次数: |
286 次 |
最近记录: |