使用参数不按预期工作创建bash别名和函数

时间:2017-10-12 06:35:46

标签: bash curl

我有这个脚本接受3个参数,它可以工作。

#!/bin/bash
curl --header "Authorization: token $GITHUB_CLI_TOKEN" \
                        --header "Accept: application/vnd.github.v3.raw" \
                        --remote-name \
                        --location "https://api.github.com/repos/$1/$2/contents/$3"

例如,使用有效的Github访问令牌

$ GITHUB_CLI_TOKEN=07D5E834792BF0B35C0DD9B1E18CC4CDB75E20E9 ./fetch.py miguelgrinberg Flask-SocketIO example/app.py

当我将其作为别名编写时,它不起作用。

alias github-fetch-file='curl --header "Authorization: token $GITHUB_CLI_TOKEN" \
                         --header "Accept: application/vnd.github.v3.raw" \
                         --remote-name \
                         --location "https://api.github.com/repos/$1/$2/contents/$3"'

它也不能作为一种功能

function github-fetch-file() {
  curl --header "Authorization: token $GITHUB_CLI_TOKEN" \
       --header "Accept: application/vnd.github.v3.raw" \
       --remote-name \
       --location "https://api.github.com/repos/$1/$2/contents/$3"
}

错误

$ github-fetch-file miguelgrinberg Flask-SocketIO example/app.py
curl: Remote file name has no length!
curl: try 'curl --help' or 'curl --manual' for more information
curl: (6) Could not resolve host: miguelgrinberg
curl: (6) Could not resolve host: Flask-SocketIO
curl: (6) Could not resolve host: example

1 个答案:

答案 0 :(得分:0)

别名不起作用,因为行尾之前的反斜杠是文字的(因为单引号)而且没有参数展开$1等也是文字的,函数应该作为脚本工作。在调用函数和脚本之前,GITHUB_CLI_TOKEN可以内联设置。