r语言 - Bash 菜单脚本 - 无法执行命令



我正在构建一个最小的标准bash菜单。选择工作正常,但命令未执行。我怀疑我可能会包装命令,但不确定这是如何完成的。我通常会发送 2 个命令,因此需要以一种 bash 将其理解为命令行的方式分离这些命令。

我发现这个 SO 问题具有类似的标题,但没有回答为什么 bash 脚本中的命令没有被执行:

无法在 bash 脚本中执行 shell 命令

什么有效,什么无效?

按1:不更改为正确的光盘。

按 2:在正确的文件夹中创建文件。

按 3:工作。

按 4:工作(R 文件准备有:<- 1(。

通缉行为:

我需要执行 bash 菜单脚本中的命令。

    #!/bin/bash

# -----
# Menu:
# -----
while :
do
echo "Menu"
echo "1 - Change directory to /tmp"
echo "2 - Create file test1.sh with hello message, in /tmp"
echo "3 - Execute test1.sh"
echo "4 - Execute R-script [/tmp/test2.R]"
echo "Exit - any kind but not [1-4]"
read answer;
case $answer in
    1)
    echo "Change directory to [tmp]"
    cd /tmp # Command to be executed.
    break
    ;;
    2)
    echo "Create file [test1.sh] in [tmp]"
    # Commands to be executed.
    cd /tmp
    touch test1.sh
    chmod +x test1.sh
    echo echo "hello" > test1.sh
    break
    ;;
    3)
    echo "Execute file [test1.sh]"
    /tmp/./test1.sh # Command to be executed.
    break
    ;;
    4)
    echo "Execute R-script [/tmp/test2.R]"
     cd /tmp && /usr/bin/Rscript test2.R # Command to be executed.
    break
    ;;
    *)
    # Command goes here
    echo "Exit"
    break
    ;;
esac
done

当您要执行所有情况时,不应使用 break。
而且在您使用/tmp/./test1.sh的情况下 3 它应该是./tmp/test1.shsh /tmp/test1.sh
您的代码应该是:

#!/bin/bash
# -----
# Menu:
# -----
while :
do
    echo "Menu"
    echo "1 - Change directory to /tmp"
    echo "2 - Create file test1.sh in /tmp"
    echo "3 - Execute test1.sh"
    echo "4 - Execute R-script [/tmp/test2.R]"
    echo "Exit - any kind but not [1-4]"
    read answer;
    case $answer in
        1)
            echo "Change directory to [tmp]"
            cd /tmp # Command to be executed.
            pwd
        ;;
        2)
            echo "Create file [test1.sh] in [tmp]"
            touch /tmp/test1.sh # Command to be executed.
        ;;
        3)
            echo "Execute file [test1.sh]"
            ./tmp/test1.sh # Command to be executed.
        ;;
        4)
            echo "Execute R-script [/tmp/test2.R]"
            /usr/bin/Rscript /production/20_front_trader/build/x_run_front_trader.R # Command to be executed.
        ;;
        *)
            # Command goes here
            echo "Exit"
        ;;
    esac
done

最新更新