bash将git命令结果添加到局部变量

时间:2018-01-03 16:42:49

标签: git bash

我正在尝试更改文件名,在将文件发送到存储库之前,在我的文件中添加提交数和当前分支名。

但是我收到以下错误:

./ publish_to_artifactory.sh:line 4:local:`rev-parse':不是有效的标识符'`

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateABTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('A_B', function (Blueprint $table) {
            $table->increments('id');
            $table->integer('a_id')->unsigned();
            $table->integer('b_id')->unsigned();
            $table->foreign('a_id')->references('id')->on('a')->onDelete('cascade');
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop('A_B');
    }
}

我做错了什么?

1 个答案:

答案 0 :(得分:2)

要将命令的输出分配给变量,您需要在bash中使用命令替换语法。

local currentBranch="$(git rev-parse --abbrev-ref HEAD)"
local gitNumberOfCommits="$(git rev-list --count HEAD)"

您所做的是将文字字符串存储在定义的局部变量中。当shell对它们进行标记以进行评估时,它已将其理解为变量赋值可怕的错误!它理解的是local名称currentBranch变量设置为值git并尝试运行rev-list作为命令,它无法在其列表中找到标准路径(在$PATH下)