当我尝试执行以下命令时:
for x in $(seq 10); do echo $($x >> c.txt); done
我收到以下错误:
-bash: 1: command not found
答案1
shell 看到后所做的echo $($x >> c.txt)
就是首先处理命令替换$($x >> c.txt)
。这将被命令的输出替换$x >> c.txt
。这$x
是1
在循环的第一次迭代中,但没有这样的命令,因此会出现错误(如果没有与 1 到 10 范围内的整数相对应的命令,则循环的每次迭代都会出现一个错误;输出问题中可能被截断)。
你可能想做类似的事情
for x in $(seq 10); do
echo "$x" >>c.txt
done
(没有命令替换),或者只是
seq 10 >>c.txt
这将产生同等的效果。
答案2
第一次执行循环时,x
will 是1
,因此您执行echo $(1 >> c.txt)
时 shell 会尝试执行1
,但未找到。
如果您添加您实际想要做的事情,我们可以指出要更改的内容。
答案3
我认为您的 bash 定义在脚本上没有正确定义。
输出:
-bash: 1: 未找到命令
通常是指 bash 定义写得不好,请确保在脚本的第一行定义如下:
#!/bin/bash
如果 bash 的位置不同,您还可以通过以下方式找到它:
which bash