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
我有一个使用参数的脚本。在 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