Bash Travis if语句不执行

Bash Travis if语句不执行,bash,travis-ci,Bash,Travis Ci,由于某种原因,当我使用if语句时,它不会为它执行configure。下面是我的完整travis.yml travis.yml: 所以出于某种原因 - if [[ ${TRAVIS_PHP_VERSION:0:3} == "7.2.0" ]]; then export git clone -b stable https://github.com/jedisct1/libsodium.git; fi 不起作用,我从 我的目标是在特定的PHP版本上执行特定的行 有什么我错过的吗 编辑:

由于某种原因,当我使用if语句时,它不会为它执行configure。下面是我的完整travis.yml

travis.yml:

所以出于某种原因

- if [[ ${TRAVIS_PHP_VERSION:0:3} == "7.2.0" ]]; then 
     export git clone -b stable https://github.com/jedisct1/libsodium.git;
 fi
不起作用,我从

我的目标是在特定的PHP版本上执行特定的行

有什么我错过的吗

编辑:

您提取了TRAVIS_PHP_版本的前3个字符,并将其与5个字符进行了比较。。那当然不行。您可以尝试:

if [[ ${TRAVIS_PHP_VERSION:0:5} == "7.2.0" ]]

结束编辑

我在Travis配置文件中运行脚本时遇到了一些问题,因为我需要空行和注释,Travis对此感到困惑。因此,一般来说,我建议在单独的bash文件中编写脚本

最简单的方法是在脚本文件中编写所有bash脚本,并使用travis.yml中的脚本文件

before_install: ./travis-scripts/before_install.sh
现在,您可以使用bash语法编写脚本,它们马上就可以工作了

如果您仍然希望在travis文件中编写脚本,请尝试并非每次都对我有效:

install: >
    if [[ ${TRAVIS_PHP_VERSION:0:3} == "7.2" ]]; then pecl install libsodium; fi;
    if [[ ${TRAVIS_PHP_VERSION:0:3} == "7.2" ]]; then echo "extension=sodium.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini; fi;
    travis_retry composer install --no-interaction;
    wget -c -nc --retry-connrefused --tries=0 https://github.com/satooshi/php-coveralls/releases/download/v1.0.1/coveralls.phar;
    chmod +x coveralls.phar;
    php coveralls.phar --version;
或者保持原样,只将if语句放在引号中。

编辑:

您提取了TRAVIS_PHP_版本的前3个字符,并将其与5个字符进行了比较。。那当然不行。您可以尝试:

if [[ ${TRAVIS_PHP_VERSION:0:5} == "7.2.0" ]]

结束编辑

我在Travis配置文件中运行脚本时遇到了一些问题,因为我需要空行和注释,Travis对此感到困惑。因此,一般来说,我建议在单独的bash文件中编写脚本

最简单的方法是在脚本文件中编写所有bash脚本,并使用travis.yml中的脚本文件

before_install: ./travis-scripts/before_install.sh
现在,您可以使用bash语法编写脚本,它们马上就可以工作了

如果您仍然希望在travis文件中编写脚本,请尝试并非每次都对我有效:

install: >
    if [[ ${TRAVIS_PHP_VERSION:0:3} == "7.2" ]]; then pecl install libsodium; fi;
    if [[ ${TRAVIS_PHP_VERSION:0:3} == "7.2" ]]; then echo "extension=sodium.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini; fi;
    travis_retry composer install --no-interaction;
    wget -c -nc --retry-connrefused --tries=0 https://github.com/satooshi/php-coveralls/releases/download/v1.0.1/coveralls.phar;
    chmod +x coveralls.phar;
    php coveralls.phar --version;

或者保持原样,只在if语句中加引号。

为什么要在每个命令前面加export?那没有任何意义。Export用于使变量或函数在子shell中可用。我删除了Export,但它仍然不会运行,这两种方式都不会导致问题。如果您发布到travis build的链接,应该更容易看出问题所在。我发现了您犯的错误并编辑了我的答案,但是如果你想编写大量的脚本,我还是建议你使用一个单独的脚本文件,为什么要在每个命令前面加上export?那没有任何意义。Export用于使变量或函数在子shell中可用。我删除了Export,但它仍然不会运行,这两种方式都不会导致问题。如果您发布到travis build的链接,应该更容易看出问题所在。我发现了您犯的错误并编辑了我的答案,但是,如果你想编写大量脚本,我还是建议你使用一个单独的脚本文件。谢谢你,直到现在我还不知道是什么:0:3。我正在学习谢谢你,直到现在我才知道:0:3。我正在学习