bash - BASH 脚本中的“换行意外”错误

标签 bash shell

我有 SHARED.SH 文件:

#!/bin/sh

g_dlg_yes=1
g_dlg_no=0
g_dlg_cancel=2
g_dlg_unknown=127

show_confirm_dlg()
{
    prompt=$*
    resp=""
    while [ "$resp" != "y" ] && [ "$resp" != "n" ] && [ "$resp" != "c" ]; do
        echo "${prompt}  [y/n/c]: "
        read resp
    done
    case "$resp" in
        y ) return g_dlg_yes;;
        n ) return g_dlg_no;;
        c ) return g_dlg_cancel;;
        * ) return g_dlg_unknown;;
    Esac
}

我还有 INSTALL.SH 文件:

#!/bin/sh

. ./shared.sh

install_pkg()
{
    clear
    pkg_name=$*
    prompt="Do you want to install ${pkg_name}?"
    show_confirm_dlg $pkg_name
    res=$?
    if [ "$res" -eq g_dlg_cancel ]; then
        echo "Installation of $pkg_name cancelled."
        exit 2
    elif [ "$res" -eq g_dlg_no ]; then
        echo "Installation of $pkg_name rejected."
    elif [ "$res" -eq g_dlg_yes ]; then
        echo "Trying to install $pkg_name..."
        apt-get install -y $pkg_name
    else
        echo "Unknown answer. Now quitting..."
        exit 2
    fi
    echo "Press ENTER to continue..."
    read key 
}

main()
{
    install_pkg "dosbox virtualbox"
    exit $?
}

main

当我尝试运行 INSTALL.SH 时,出现以下错误: ./install.sh: 22: ./shared.sh: 语法错误:换行意外(预期为“)”)

你能帮我解决这个错误吗?

最佳答案

Bash 命令和语句区分大小写。 SHARED.SH 文件中的 esac 命令大小写错误。

#!/bin/sh

g_dlg_yes=1
g_dlg_no=0
g_dlg_cancel=2
g_dlg_unknown=127

show_confirm_dlg()
{
    prompt=$*
    resp=""
    while [ "$resp" != "y" ] && [ "$resp" != "n" ] && [ "$resp" != "c" ]; do
        echo "${prompt}  [y/n/c]: "
        read resp
    done
    case "$resp" in
        y ) return g_dlg_yes;;
        n ) return g_dlg_no;;
        c ) return g_dlg_cancel;;
        * ) return g_dlg_unknown;;
    esac
}

关于bash - BASH 脚本中的“换行意外”错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30207723/

相关文章:

bash - for 循环行为不一致

bash - 使用带有 'rename' 的通配符

linux - 如何使用 awk 显示文本文件中的重复项

bash - 在 bash 中按特定顺序打印文件

linux - 如何使用新文件夹将子目录文件夹复制到新目录?

linux + 将 sh 脚本转换为 bash + bash 是否支持以前的 sh 脚本

linux - 运行此 sh 脚本后无法生成 *.deb 文件

linux - 将大括号扩展与过程替换相结合

ruby - 无法让 RVM 切换 ruby

Linux Shell 脚本 - 日期格式不起作用