このエラーについては、以前の投稿を確認しました。まだ解決策は機能していません。これは私の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]
上記の2つのうち2番目を使用しており、compound-command
コンテンツは中括弧内にあります{...}
。今は大丈夫ですman bash
。しかし、この構造に対する反対意見もありました。John Moonでコメントしたリンク他の答えの下。そしてGregのWikiリンク再びその答えに。
あなたの質問に戻り、スクリプト名を見れば、つまりとの間に大きな違いはDockerfunctiontest.sh
ないと思います。おそらく、次のようにスクリプトを実行したと思います。sh
bash
sh Dockerfunctiontest.sh
次のいずれかを使用して実行するのは合理的ですが、
bash Dockerfunctiontest.sh
または
./Dockerfunctiontest.sh
最後に、スクリプトの最初の行に基づいてインタプリタを選択します。
#!/bin/bash
スクリプトで指定されたインタプリタはBashですが、ファイル名を正しい方法で指定するのはどうでしょうか?
Dockerfunctiontest.bash
今後は混乱が減ります。
答え2
これはとても簡単です!ステートメントからおよびを削除 (
し、以下のように再試行してください。)
「function foo(){}」と「foo(){}」の違い説明する。