将$ @分配给Shell函数中的另一个变量

我是一个男人

我正在制作一个智能别名gc,可以区分git commit / checkout。

如果gc被称为不带任何参数或使用-a-m参数,然后git的承诺运行。否则,将运行git checkout(如果存在b带有附加参数标志)。如果调用了gc的任何其他变体,我宁愿它引发错误而不是做意外的事情。

到目前为止,这是我的shell函数。

gc() {
    args=$@
    commit=false
    checkout=false

    # Check flags
    while getopts ":am:b" opt; do
        case $opt in
            a|m)
                commit=true
                ;;
            b)
                checkout=true
                ;;
            \?)
                echo "Unknown flags passed."
                return 1
                ;;
        esac
    done

    shift "$((OPTIND-1))"

    # Check number of arguments
    if [[ "$#" == 0 ]]; then
        commit=true
    elif [[ "$#" == 1 ]]; then
        checkout=true
    else
        echo "Too many arguments"
        return 1
    fi

    # Finally run respective command
    if [[ $commit == true && $checkout == true ]]; then
        echo "Unable to ascertain which operation you would like to perform."
        return 1
    elif [[ $commit == true ]]; then
        git commit "$args"
    elif [[ $checkout == true ]]; then
        git checkout "$args"
    else
        echo "Undefined behavior"
        return 1
    fi
}

但是,这不能正常工作。经过一些试验,我发现分配$@给另一个变量是根本原因,但我无法理解为什么以及到底出了什么问题。

另外,在我第一次编写shell函数时,请突出显示我犯的任何错误。

jesse_b

$@ 是一个数组,将其分配给一个数组:

args=("$@")

然后将其用作数组:

elif [[ $commit == true ]]; then
    git commit "${args[@]}"
elif [[ $checkout == true ]]; then
    git checkout "${args[@]}"
else

当前代码中发生的事情是所有单独的参数都存储为单个字符串。因此,如果您致电:

bc -a "foo bar"

这被分配args为:

args='-a foo bar'

然后,而不是执行:

git commit -a "foo bar"

你得到:

git commit '-a foo bar'

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将struct的第一个变量分配给另一个

来自分类Dev

Python将值从一个变量分配给另一个

来自分类Dev

如何将一个JavaScript文件中的变量分配给另一个JS File?

来自分类Dev

将String变量的值分配给另一个String变量

来自分类Dev

如何将公式的值(包含变量)分配给另一个变量

来自分类Dev

无法将结构变量分配给另一个结构变量

来自分类Dev

C#将指向引用类型的变量分配给另一个变量,后者中存储了什么?

来自分类Dev

如何将包含空格的变量分配给 KSH 中的另一个变量

来自分类Dev

将Object成员变量分配给另一个双重强指针

来自分类Dev

将参数分配给另一个变量有什么好处

来自分类Dev

将const变量的成员分配给另一个const

来自分类Dev

将$ PWD / *分配给另一个变量

来自分类Dev

如何将变量列表分配给另一个列表

来自分类Dev

将另一个网页的特定数据分配给变量或数组

来自分类Dev

PHP将php变量分配给另一个php条件

来自分类Dev

将const变量的成员分配给另一个const

来自分类Dev

bash在操作后将变量分配给另一个

来自分类Dev

如何将Angular @Input值分配给另一个变量并填充到子代中?

来自分类Dev

C ++将函数指针分配给另一个

来自分类Dev

如何将一个函数返回的值分配给另一个函数

来自分类Dev

如何将另一个函数返回的函数分配给函数变量?结果而不是生成函数本身

来自分类Dev

将数组引用分配给Java中的另一个数组

来自分类Dev

将数组子集分配给Matlab中另一个数组的成员

来自分类Dev

将产品属性值分配给magento中的另一个产品属性

来自分类Dev

将列表分配给另一个类中现有列表的值

来自分类Dev

将数据分配给Linq中另一个List的子列表

来自分类Dev

将数组子集分配给Matlab中另一个数组的成员

来自分类Dev

ruby将数组分配给另一个变量,并且从该分配变量中删除元素时,也会在原始数组上删除该元素

来自分类Dev

当您知道GET变量名称的一部分时,将GET变量分配给PHP中的另一个变量

Related 相关文章

  1. 1

    将struct的第一个变量分配给另一个

  2. 2

    Python将值从一个变量分配给另一个

  3. 3

    如何将一个JavaScript文件中的变量分配给另一个JS File?

  4. 4

    将String变量的值分配给另一个String变量

  5. 5

    如何将公式的值(包含变量)分配给另一个变量

  6. 6

    无法将结构变量分配给另一个结构变量

  7. 7

    C#将指向引用类型的变量分配给另一个变量,后者中存储了什么?

  8. 8

    如何将包含空格的变量分配给 KSH 中的另一个变量

  9. 9

    将Object成员变量分配给另一个双重强指针

  10. 10

    将参数分配给另一个变量有什么好处

  11. 11

    将const变量的成员分配给另一个const

  12. 12

    将$ PWD / *分配给另一个变量

  13. 13

    如何将变量列表分配给另一个列表

  14. 14

    将另一个网页的特定数据分配给变量或数组

  15. 15

    PHP将php变量分配给另一个php条件

  16. 16

    将const变量的成员分配给另一个const

  17. 17

    bash在操作后将变量分配给另一个

  18. 18

    如何将Angular @Input值分配给另一个变量并填充到子代中?

  19. 19

    C ++将函数指针分配给另一个

  20. 20

    如何将一个函数返回的值分配给另一个函数

  21. 21

    如何将另一个函数返回的函数分配给函数变量?结果而不是生成函数本身

  22. 22

    将数组引用分配给Java中的另一个数组

  23. 23

    将数组子集分配给Matlab中另一个数组的成员

  24. 24

    将产品属性值分配给magento中的另一个产品属性

  25. 25

    将列表分配给另一个类中现有列表的值

  26. 26

    将数据分配给Linq中另一个List的子列表

  27. 27

    将数组子集分配给Matlab中另一个数组的成员

  28. 28

    ruby将数组分配给另一个变量,并且从该分配变量中删除元素时,也会在原始数组上删除该元素

  29. 29

    当您知道GET变量名称的一部分时,将GET变量分配给PHP中的另一个变量

热门标签

归档