다음 명령을 실행하려고 하면:
for x in $(seq 10); do echo $($x >> c.txt); done
다음 오류가 발생합니다.
-bash: 1: command not found
답변1
이것을 확인한 후 쉘이 하는 일은 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)
쉘은 실행을 시도 1
하지만 찾지 못합니다.
실제로 하고 싶은 일을 추가하면 무엇을 바꿔야 할지 지적해 드릴 수 있습니다.
답변3
귀하의 bash 정의가 스크립트에 올바르게 정의되지 않은 것 같습니다.
산출:
-bash: 1: 명령을 찾을 수 없습니다.
일반적으로 이는 bash 정의가 제대로 작성되지 않았음을 의미합니다. 스크립트의 첫 번째 줄이 다음과 같이 정의되어 있는지 확인하세요.
#!/bin/bash
Bash가 다른 위치에 있는 경우 다음을 통해 찾을 수도 있습니다.
which bash