스크립트를 실행하려고 할 때 발생하는 오류입니다.
~bin/killp: line 7: [[ menubar: command not found
~bin/killp: line 11: [[ menubar: command not found
~bin/killp: line 11: [[: command not found
~bin/killp: line 15: [[ menubar: command not found
~bin/killp: line 15: [[: command not found
~bin/killp: line 15: [[ menubar: command not found
~bin/killp: line 19: conditional binary operator expected
~bin/killp: line 19: syntax error near `Dock'
~bin/killp: line 19: `if [[ $1 == Dock ]]; then'
이 선들은 이렇게 생겼어요
if [[ $1 == Desktop ]] || [[ $1 == Finder ]]; then
killall Finder
fi
유일한 차이점 Desktop
은 입니다 Finder
. menubar
은 내가 스크립트에 전달하는 매개변수입니다 $1
.
답변1
오류 메시지에 따르면 스크립트에 잘림 방지 공백 문자가 숨겨져 있을 수 있습니다(예: ⌥- 입력 space).
예를 들어 오류는 실제로 다음과 같습니다.
~bin/killp: line 7: [[@menubar: command not found
~bin/killp: line 11: [[@menubar: command not found
~bin/killp: line 11: @[[: command not found
~bin/killp: line 15: [[@menubar: command not found
~bin/killp: line 15: @[[: command not found
~bin/killp: line 15: @[[@menubar: command not found
~bin/killp: line 19: conditional binary operator expected
~bin/killp: line 19: syntax error near `Dock'
~bin/killp: line 19: `if [[ $1 == Dock ]]; then' <-- Somewhere, not sure where.
보이지 않는 문자를 @로 대체했습니다.
답변2
내 경험상 이와 같은 문제는 코드에서 한두 줄을 찾아 내가 엉망으로 만든 부분을 찾으면 해결될 수 있습니다.
방금 vim(killall 대신 echo 사용)을 사용하여 Mac에 제공한 내용을 입력했는데 다음과 같이 제대로 작동했습니다.
$ more test.sh
#!/bin/sh
if [[ $1 == Desktop ]] || [[ $1 == Finder ]]; then
echo "Finder"
fi
cygwin을 실행하는 Windows 머신에서:
petro@<blur> ~
$ ./test.sh
petro@<blur> ~
$ ./test.sh stuffing
petro@<blur> ~
$ ./test.sh Finder
Finder
따라서 작성된 코드는 좋아 보이지만 문제가 있을 수 있습니다.