微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

执行从参数接收到的命令到 Bash 脚本中的函数

如何解决执行从参数接收到的命令到 Bash 脚本中的函数

我正在编写一个脚本来在 linux 中添加删除 samba 共享。此脚本需要安装 samba 和对话框。

我的完整代码位于 https://paste.ubuntu.com/p/Q45fjcFbwr/

这是一个片段。

#!/bin/bash

function display_output() {
    dialog --backtitle "" --title "" --clear --msgBox "$1" 10 90
}

function execute() {
    execmd=("$1")
    ${execmd[@]}                   # doesn't do anything it seems...
    #display_output "${execmd[@]}"
}

function yesno() {
    # store command string
    cmd=$1
    
    dialog --title "Confirm" \
       --backtitle "Confirm command" \
       --yesno "$cmd" 7 90
    confirm=$?
    
    # actions
    case $confirm in
    0) execute "$cmd";;
    1) break;;
    255) break;;

    esac
}    

function create_share() {
    ...

    if [ $cancelled = "no" ]; then
    case $1 in
    PUBW) yesno "net usershare add \"${VALUES_ARRAY[0]}\" \"${VALUES_ARRAY[1]}\" \"${VALUES_ARRAY[2]}\" Everyone:F guest_ok=y && chmod 777 \"${VALUES_ARRAY[1]}\"";;
    PUBR) yesno "net usershare add \"${VALUES_ARRAY[0]}\" \"${VALUES_ARRAY[1]}\" \"${VALUES_ARRAY[2]}\" Everyone:R guest_ok=y";;
    PRVW) yesno "net usershare add \"${VALUES_ARRAY[0]}\" \"${VALUES_ARRAY[1]}\" \"${VALUES_ARRAY[2]}\" Everyone:F guest_ok=n && chmod 777 \"${VALUES_ARRAY[1]}\"";;
    PRVR) yesno "net usershare add \"${VALUES_ARRAY[0]}\" \"${VALUES_ARRAY[1]}\" \"${VALUES_ARRAY[2]}\" Everyone:R guest_ok=n";;
    esac
    fi
}

# try out main menu
# the main menu is in an infinite loop
...

在 execute() 中,display_output "${execmd[@]}" 在 msgBox 中以字符串形式正确显示命令。

但是,当我期望它实际执行命令时,${execmd[@]} 似乎没有做任何事情。

谢谢

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。