簡體   English   中英

通過shell變量將配置選項傳遞給git clone

[英]Passing config options via shell variable to git clone

我正在嘗試通過bash上的環境變量將動態創建的配置選項傳遞給git clone

直接傳遞它們有效,但不能通過env變量起作用:

$ git clone -c 'url.foo.insteadof=bar' git://git.cweiske.de/psist.git
... all fine

$ export PARAMS="-c 'url.foo.insteadof=bar'"; git clone $PARAMS git://git.cweiske.de/psist.git
error: invalid key: 'url.foo.insteadof

如何使git識別選項?

這是因為在第一個示例中, 引號是句法上的:

$ (set -o xtrace; git clone -c 'url.foo.insteadof=bar' git://invalid) 2>&1 | grep 'git clone'
+ git clone -c url.foo.insteadof=bar git://invalid

而在第二個中,它們是原義的:

$ (set -o xtrace; export PARAMS="-c 'url.foo.insteadof=bar'" && git clone $PARAMS git://invalid) 2>&1 | grep 'git clone'
+ git clone -c ''\''url.foo.insteadof=bar'\''' git://invalid

您可以使用數組來可靠地使用變量傳遞參數

$ (set -o xtrace; export PARAMS=('-c' 'url.foo.insteadof=bar') && git clone "${PARAMS[@]}" git://invalid) 2>&1 | grep 'git clone'
+ git clone -c url.foo.insteadof=bar git://invalid

您可以使用eval來正確傳遞參數。

export PARAMS="-c 'url.foo.insteadof=bar'"; 
eval git clone $PARAMS git://git.cweiske.de/psist.git

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM