Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何正确运行下面的bash代码_Bash_Shell_Sh - Fatal编程技术网

如何正确运行下面的bash代码

如何正确运行下面的bash代码,bash,shell,sh,Bash,Shell,Sh,您好,我是编程和bash新手,我收到了以下代码,并被告知运行它来安装一些必需的工具。我复制并粘贴到终端,但安装失败。我还将其复制并粘贴到.sh文件中,并在终端中执行,但我没有运行任何操作。我做错了什么 # Shell Scripting Reference: # Link: https://tldp.org/LDP/abs/html/ function install_brew { # Brew Reference: https://brew.sh/ # Homebrew Che

您好,我是编程和bash新手,我收到了以下代码,并被告知运行它来安装一些必需的工具。我复制并粘贴到终端,但安装失败。我还将其复制并粘贴到
.sh
文件中,并在终端中执行,但我没有运行任何操作。我做错了什么

# Shell Scripting Reference:
# Link: https://tldp.org/LDP/abs/html/
function install_brew {
    # Brew Reference: https://brew.sh/
    # Homebrew Cheatsheet: https://devhints.io/homebrew
    echo "function::install_brew"
    if [[ ! $(command -v brew) ]]; then
        brew_url="https://raw.githubusercontent.com/Homebrew/install/master/install.sh"
        echo "Homebrew is not installed , downloading it"
        $(command -v sh) -c "$(curl -fsSL $brew_url)" 
        else 
        echo "Homebrew is already installed!"
    fi
    echo $(command -v brew)
}
function install_jdk {
    echo "function::install_jdk"
    brew install scala
    brew install sbt
    echo "Finding Shells"
    currentShell=$(ps -p $$ -ocomm=)
    echo "Your current shell is: $currentShell"
    export PATH="/usr/local/opt/openjdk/bin:$PATH"
    export CPPFLAGS="-I/usr/local/opt/openjdk/include"
    # Depending on the environment you use, you may need to update
    # your shell's boot config to persist changes
    if [[ $currentShell =~ "sh" ]]; then
        if [[ $(grep -Fxq 'export PATH="/usr/local/opt/openjdk/bin:$PATH"' ~/.bashrc) ]]; then 
            echo "Appending to PATH (sh) for OpenJDK installation"
            echo 'export PATH="/usr/local/opt/openjdk/bin:$PATH"' >> ~/.bashrc
            echo 'export CPPFLAGS="-I/usr/local/opt/openjdk/include"' >> ~/.bashrc
            sudo ln -sfn /usr/local/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk
        else
            echo "OpenJDK setup already complete (SH)."
        fi
        else if [[ $currentShell =~ "zsh" ]]; then
            if [[ $(grep -Fxq 'export PATH="/usr/local/opt/openjdk/bin:$PATH"' ~/.zshrc) ]]; then 
                echo "Appending to PATH (zsh) for OpenJDK installation"
                echo 'export PATH="/usr/local/opt/openjdk/bin:$PATH"' >> ~/.zshrc
                echo 'export CPPFLAGS="-I/usr/local/opt/openjdk/include"' >> ~/.zshrc
                sudo ln -sfn /usr/local/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk
            else 
                echo "OpenJDK setup already complete (ZSH)."
            fi
        fi
    fi 
    echo $($(command -v java) -version) && echo $($(command -v scala) -version)
}
function install_spark {
    # Reference: Scala Spark Setup
    # https://learnscalaspark.com/getting-started-intellij-scala-apache-spark
    # Reference: PySpark Setup
    # https://medium.com/@achilleus/get-started-with-pyspark-on-mac-using-an-ide-pycharm-b8cbad7d516f
    echo "function::install_spark"
    pkgs=("apache-spark" "python" "virtualenv")
    for i in "${pkgs[@]}"
    do
        brew install $i
    done
    # If you're creating a new virtualenv or even if you're using the one pathed on your computer, you can use pip to install pyspark
}
function install_optionals {
    echo "function::install_optionals"
    optionals=("terraform" "apache-flink")
    for i in "${optionals[@]}"
    do
        brew install $i
    done
}
#install_brew
#install_jdk
#install_spark
#install_optionals

在bash代码中,您已经定义了4个函数,但尚未在脚本中调用这些函数


您需要运行每个函数。您可以通过取消注释脚本的最后4行来完成此操作。

在bash代码中,您已经定义了4个函数,但尚未调用脚本中的函数


您需要运行每个函数。您可以通过取消注释脚本的最后4行来完成此操作。

是的,我同意上面关于取消注释最后4行的说法。我发现的另一件事是一个失踪的舍邦

确保文件以以下内容开头: #!/bin/bash

然后标记可执行文件:
chmod+x scriptname.sh

是的,我同意上面关于取消评论最后4行的说法。我发现的另一件事是一个失踪的舍邦

确保文件以以下内容开头: #!/bin/bash

然后标记可执行文件:
chmod+x scriptname.sh

最后4行被注释掉。您需要删除
#
顺便说一句,注意
$(command-vjava)-version
比只运行
java-version
更慢,更麻烦……这不是这里唯一的反模式,这并不奇怪——TLDP的ABS在某种程度上因为教坏的实践而臭名昭著。作为一个开始的地方,您可以考虑和描述要避免什么,以及作为文档更好地关注好的实践,并且(也可以作为命令行工具本地安装)。作为捕捉常见错误的工具。如果上面的评论对您没有帮助,请验证您的sh脚本是否可执行。您可以运行:chmod+x file_name.sh最后4行被注释掉。您需要删除
#
顺便说一句,注意
$(command-vjava)-version
比只运行
java-version
更慢,更麻烦……这不是这里唯一的反模式,这并不奇怪——TLDP的ABS在某种程度上因为教坏的实践而臭名昭著。作为一个开始的地方,您可以考虑和描述要避免什么,以及作为文档更好地关注好的实践,并且(也可以作为命令行工具本地安装)。作为捕捉常见错误的工具。如果上面的评论对您没有帮助,请验证您的sh脚本是否可执行。你可以运行:chmod+x file_name.shIf,如果你添加的答案只重复别人在评论中说的话,而不是严格要求,那么在社区wiki上标记该答案是一种很好的礼仪(不要因为非原创内容而获得声誉积分)。@CharlesDuffy已经超过5年没有在上面发布过了。不知道社区wiki功能。谢谢你的提示。@CharlesDuffy另外,注释的解决方案并没有解释为什么取消行注释可以解决问题。作为一名训练有素的教育家,我认为这是一个好答案的重要组成部分,如果你添加的答案只是重复别人在评论中所说的话,而不是严格要求,那么这就是“原始内容”。在社区维基上标记该答案是一种良好的礼仪(不为非原创内容获得声誉积分).@CharlesDuffy已经超过5年没有在SO上发表文章了。不知道社区wiki功能。谢谢你的提示。@CharlesDuffy同样,注释解决方案并没有解释为什么取消行注释可以解决问题。作为一名训练有素的教育者,我认为这是一个好答案的重要组成部分,并且构成了“原始内容”