Bash 对于i,`./script`cat file``语法

Bash 对于i,`./script`cat file``语法,bash,for-loop,parameters,cat,seq,Bash,For Loop,Parameters,Cat,Seq,我有一个使用参数的脚本。在shell中,我像这样运行脚本:/script1 2 3 4。我更喜欢使用一个在一行中包含1234的文件并运行:/script`cat file` 在我像这样在for循环中调用这个脚本之后:“./script`cat file``中的for I,但它不起作用。好的语法是什么?不能像这样嵌套tilde(命令替换)。您可以执行以下操作: for i in $(./script $(<file)) 对于$(./script$(中的i,您不能像这样嵌套tilde(命令替

我有一个使用参数的脚本。在shell中,我像这样运行脚本:
/script1 2 3 4
。我更喜欢使用一个在一行中包含1234的文件并运行:
/script`cat file`

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

不能像这样嵌套tilde(命令替换)。您可以执行以下操作:

for i in $(./script $(<file))
对于$(./script$(中的i,您不能像这样嵌套tilde(命令替换)。您可以执行以下操作:

for i in $(./script $(<file))
对于$(./script$(使用
$()
而不是
\
``替换命令。这是它更好的原因之一

也就是说,使用
cat文件
获取单词列表充其量是一个糟糕的主意,最坏的情况是一个坏主意(并且可能有危险)。它不能处理任何需要空格或使用shell全局字符的单词

首先,我建议不要这样做。

使用
$()
而不是
\
``来替代命令。这是它更好的众多原因之一

man seq
也就是说,使用
cat文件
获取单词列表充其量是一个糟糕的主意,最坏的情况是一个坏主意(并且可能有危险)。它不能处理任何需要空格或使用shell全局字符的单词

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

man seq
生成一个数字序列

#!/bin/bash

for i in $(seq 1 10)
do
  echo $i
done
生成一个数字序列

#!/bin/bash

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