임의의 인수를 허용하는 Bash 스크립트를 테스트 중인데 다음과 같은 내용이 표시되는 것을 확인했습니다.
./Var: line 19: [three: command not found
다음은 최소한의 작업 예입니다.
#!/bin/bash
$1 $2 $3
echo "The first argument does $1"
if [$1 >= 2]; then
echo "$1 has 2 words"
else
echo "$1 has unknown amount of words"
fi
#^First
echo "The second argument does $2"
if [$2 >= 2]; then
echo "$2 has 2 words"
else
echo "$2 has unknown amount of words"
fi
#^Second
echo "The third argument does $3"
if [$3 >= 2]; then
echo "$3 has 2 words"
fi
#^Third
하지만 스크립트는 계속 실행됩니다. "명령을 찾을 수 없음" 메시지 없이 스크립트를 실행할 수 있는 방법이 있습니까? 아니면 이것이 내 코드의 문제로 인해 발생하는 것입니까?
답변1
사용하려는 명령은 [
(또는 test
)이 아니라 [whatever
이므로 (예를 들어)이어야 합니다.
[ "$3" -ge 2 ]
대신 if is 를 [$3 >= 2]
생성합니다 . 또한:[three: command not found
$3
three
- 변수를 참조하십시오.
[
이해하지 못함>=
, 이해-ge
및 기타 옵션;>=
어쨌든 리디렉션이므로 명령이[
또는 인지 여부에 관계없이 명령에 도달하지 않습니다[three
. 이제 이라는 파일이 생겼습니다=
.
Bash에 내장되어 있습니다 [
. 바라보다 help [
, help test
.