for i in `./script `cat file`` 语法

for i in `./script `cat file`` syntax

我有一个使用参数的脚本。在 shell 我 运行 脚本中是这样的:./script 1 2 3 4。我更喜欢使用在一行中包含 1 2 3 4 和 运行: ./script `cat file` 的文件。

在我像这样在 for 循环中调用此脚本后:for i in `./script `cat file` ` 但它不起作用。什么是好的语法?

您不能像这样嵌套代字号(命令替换)。你可以这样做 bash:

for i in $(./script $(<file))

$(<file) 是获取 $(cat file)

输出的另一种方式

使用 $() 而不是 \`` 进行命令替换。除其他外,这是它更好的众多原因之一。

据说使用 cat file 来获取单词列表充其量是一个糟糕的主意,最糟糕的是,它是一个错误的(并且有潜在危险的)。它不适用于任何需要空格或使用 shell 通配符的单词。

我建议一开始就不要这样做。

man seq

生成一个数字序列。

#!/bin/bash

for i in $(seq 1 10)
do
  echo $i
done