小编ole*_*leq的帖子

将 git submodule foreach 与函数一起使用

我的缩进是有一个脚本,根据给定的分支更新所有 git 子模块。如果子模块没有这样的分支,则使用 master。

这就是我现在所拥有的:

#!/bin/bash -x

if [ -z $1 ]; then
    echo "Branch name required."
    exit
fi

function pbranch {
    exists=`git show-ref refs/heads/$branch`

    if [ -z $exists ]; then
        branch="master"
    fi

    git co $branch
    git pull origin $branch
}

branch=$1

git submodule foreach pbranch
Run Code Online (Sandbox Code Playgroud)

但是在运行这个脚本时,会抛出错误:

oleq@pc ~/project> git-fetchmodules major
+ '[' -z major ']'
+ branch=major
+ git submodule foreach pbranch
Entering 'submodule'
/usr/lib/git-core/git-submodule: 1: eval: pbranch: not found
Stopping at 'submodule'; script returned non-zero status.
Run Code Online (Sandbox Code Playgroud)

我的猜测是git …

bash git

11
推荐指数
3
解决办法
1万
查看次数

Bash:将大括号作为参数传递给 bash 函数

我喜欢使用以下模式在文件中搜索:

grep --color=auto -iRnHr --include={*.js,*.html,} --exclude-dir={release,dev,} "span" .
Run Code Online (Sandbox Code Playgroud)

然而,我想把这个包装成一个像这样的 bash 命令:

findinfiles {*.js,*.html,} {release,dev,} "span"  // syntax is just a guessing
Run Code Online (Sandbox Code Playgroud)

我无法解决将这些类型的大括号传递给 bash 函数并将它们与$1,$2等一起使用的问题。当我使用以下内容时:

function findinfiles() {
    echo $1, $2, $3
}
Run Code Online (Sandbox Code Playgroud)

然后:

me@pc ~> findinfiles {*.js,*.html,} {release,dev,} "span"
*.js, *.html, release
Run Code Online (Sandbox Code Playgroud)

当然,将参数传递给 grep 不会以这种方式工作。似乎参数已编入索引但未正确分组。

谁能教我如何处理这些争论?

bash quoting function arguments

4
推荐指数
1
解决办法
2704
查看次数

标签 统计

bash ×2

arguments ×1

function ×1

git ×1

quoting ×1