이 오류에 대해서는 이전 게시물을 확인했습니다. 아직까지 해결책이 작동하지 않았습니다. 이것은 내 bash 스크립트입니다. 누구든지 이 문제를 해결하도록 도와줄 수 있나요? 나는 사용했다https://www.shellcheck.net/오류가 있는지 확인하세요. 나는 그것을 찾지 못했습니다.
실수:
Dockerfunctiontest.sh: 2: Dockerfunctiontest.sh: Syntax error: "(" unexpected
스크립트:
#!/bin/bash
function BuildSimpleContainer ()
{
docker search mariadb
docker pull mariadb:latest
docker run --name mariadbtestfour -e MYSQL_ROOT_PASSWORD=mypass -d mariadb --log-bin --binlog-format=MIXED
docker exec -it mariadbtest bash
apt-get -qq update
apt-get -qq -y install curl
apt-get -qq -y install wget
apt-get update
apt-get install apt-transport-https
apt-get update
cd /home
mkdir mdsd
cd mdsd/
wget '<blob url to pfx file>'
echo "certififcate Downloaded"
wget '<blob url file1>'
echo "file1 Downloaded"
wget 'blob url file2'
echo "file2 Downloaded"
}
BuildSimpleContainer
답변1
내 생각에는 이 스크립트를 Bash 스크립트로 실행하는 것이 아니라 이 구문을 허용하지 않는 다른 쉘을 사용하고 있는 것 같습니다. 예를 들어. sh
.
Shellcheck에서 볼 수 있고 man
내 Debian의 Bash에서 확인한 것처럼 다음 구문이 정확합니다.
name () compound-command [redirection]
function name [()] compound-command [redirection]
위의 두 가지 중 두 번째를 사용하고 있으며 compound-command
콘텐츠는 중괄호 안에 있습니다 {...}
. 지금은 괜찮습니다 man bash
. 그러나 이 구조에 대한 반대 의견도 있었습니다.John Moon의 댓글에 있는 링크다른 답변 아래. 그리고Greg의 위키 링크다시 그 대답에.
귀하의 질문으로 돌아가서, 스크립트 이름을 보면, 즉 와 사이에 큰 차이가 Dockerfunctiontest.sh
없다고 생각합니다 . 아마도 다음을 사용하여 스크립트를 실행했을 것입니다.sh
bash
sh Dockerfunctiontest.sh
다음 중 하나를 사용하여 실행하는 것이 합리적이지만:
bash Dockerfunctiontest.sh
또는
./Dockerfunctiontest.sh
마지막 것은 스크립트의 첫 번째 줄을 기반으로 인터프리터를 선택합니다.
#!/bin/bash
스크립트에 지정된 인터프리터는 Bash이지만 파일 이름을 올바른 방식으로 지정하는 것은 어떨까요?
Dockerfunctiontest.bash
앞으로는 혼란이 줄어들 것입니다.
답변2
이것은 매우 간단합니다! 명령문에서 및를 제거 (
하고 아래와 같이 다시 시도하십시오.)
"function foo() {}"와 "foo() {}"의 차이점설명하다.