相关疑难解决方法(0)

git:如果http请求失败则重试

在我们的持续集成环境中,我们非常重视git clone和使用git update.

有时网络或中央git服务器不可靠.

如果http请求失败,有没有办法告诉git重试?

例:

访问https时出现 500内部服务器错误:https: //example.com/repos/foo_bar/info/refs service = git- upload- package

git http

8
推荐指数
3
解决办法
3022
查看次数

在 docker 镜像中传递 docker 运行时环境变量

这是我的码头工人形象。我想从最后提到的 docker run 命令中传递的任何内容覆盖下面设置的默认环境变量

FROM ubuntu:16.04

ADD http://www.nic.funet.fi/pub/mirrors/apache.org/tomcat/tomcat-8/v8.0.48/bin/apache-tomcat-8.0.48.tar.gz /usr/local/
RUN cd /usr/local && tar -zxvf apache-tomcat-8.0.48.tar.gz && rm apache-tomcat-8.0.48.tar.gz
RUN mv /usr/local/apache-tomcat-8.0.48 /usr/local/tomcat
RUN rm -rf /usr/local/tomcat/webapps/*

ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64
ENV CATALINA_HOME /usr/local/tomcat
ENV CATALINA_BASE /usr/local/tomcat
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin

ENV dummy_url defaulturl
ENV database databasedefault

COPY my.war /usr/local/tomcat/webapps/

RUN echo >> /usr/local/tomcat/conf/test.properties
RUN echo dummy_url =$dummy_url >> /usr/local/tomcat/conf/test.properties
RUN echo database =$database >> /usr/local/tomcat/conf/test.properties

ENTRYPOINT ["catalina.sh", "run"]
Run Code Online (Sandbox Code Playgroud)

在本地运行:

docker run -p 8080:8080 -e dummy_url=http:google.com -e database=jdbc://mysql allimages/myimage:latest
Run Code Online (Sandbox Code Playgroud)

dummy_url 和数据库似乎没有在我添加它们的文件中被覆盖 - …

docker dockerfile

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

$ @和"$ @"之间有什么区别吗?

有什么区别$@"$@"

我知道非特殊字符可能存在差异,但@输入参数的符号呢?

bash expansion

7
推荐指数
2
解决办法
6282
查看次数

将 Bash 脚本参数 $@ 存储在变量中

如何$@在保持其属性的同时存储在变量中?

即使我$@在所有可能的情况下使用或我自己的变量,我也想获得完全相同的行为。

以下尝试无效:

args=$@
args2="$@"        # the arguments are combined (see the last output paragraph)
Run Code Online (Sandbox Code Playgroud)

我使用以下行测试了它们:

s.sh A B="       " C
Run Code Online (Sandbox Code Playgroud)

s.sh

args=$@
args2="$@"        # the arguments are combined (see the last output paragraph)
Run Code Online (Sandbox Code Playgroud)

A.java

s.sh A B="       " C
Run Code Online (Sandbox Code Playgroud)

实际输出:

A B= C
A B= C
A B= C

A B= C
A B=        C
A B=        C

3: [A, B=, C]
3: [A, B=, C]
3: [A, B=, C]

1: [A B= C]
1: …
Run Code Online (Sandbox Code Playgroud)

bash parameter-passing args

3
推荐指数
2
解决办法
3613
查看次数

Bash 关联数组中带空格的键

我正在尝试将结构化文件读入 Bash 中的关联数组。该文件在每一行中存储一个人名和一个人地址。例如:

person1|address1
person2|address2
...
personN|addressN
Run Code Online (Sandbox Code Playgroud)

我正在使用下面的脚本。

#!/bin/bash
declare -A address
while read line
do
    name=`echo $line | cut -d '|' -f 1`
    add=`echo $line | cut -d '|' -f 2`
    address[$name]=$add
    echo "$name - ${address[$name]}"
done < adresses.txt

for name in ${!address[*]}
do
    echo "$name - ${address[$name]}"
done
Run Code Online (Sandbox Code Playgroud)

脚本正常工作。但是,在 FOR 循环中,当人名有空格(例如“John Nobody”)时,我遇到了一些问题。我怎样才能解决这个问题?

linux arrays bash shell ubuntu

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

$ @和$*之间的区别

我已经写了一个简单的脚本,需要在任意数量的参数来证明之间的区别$@$*:

#!/bin/bash                                                                
echo "double quoted $*     $@"
echo 'single quoted $*     $@'
Run Code Online (Sandbox Code Playgroud)

我在CLI上做了

$./stuff.sh a b c d e f dfs 
Run Code Online (Sandbox Code Playgroud)

这就是打印出来的东西

double quoted a b c d e f dfs     a b c d e f dfs
single quoted $*     $@
Run Code Online (Sandbox Code Playgroud)

既然它们是相同的那么意味着$@等于$*?还是有一点我错过了?

parameters bash command-line-interface

2
推荐指数
1
解决办法
3128
查看次数

使用 bash 连接多行字符串

给定参数列表,我尝试使用 bash 脚本生成如下所示的字符串:

 - arg_1
 - arg_2
 - arg_3
 - arg_4
Run Code Online (Sandbox Code Playgroud)

这是我尝试执行此操作的脚本:

seeds=
for i in $*; do
  seeds=`printf "$seeds    - $i\n"`
done;
echo "$seeds"
Run Code Online (Sandbox Code Playgroud)

但是,当我使用 input 运行它时arg_1 arg_2 arg_3 arg_4,上面的脚本会生成以下输出,这显然忽略了我的空格和换行符:

- arg_1 - arg_2 - arg_3 - arg_4
Run Code Online (Sandbox Code Playgroud)

我能知道我的脚本中做错了什么吗?或者有更好的方法来做到这一点吗?

string bash

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