小编Dou*_*dou的帖子

如何在Bash中保持关联数组顺序

我尝试在Bash中迭代一个关联数组.它似乎很简单,但循环不遵循数组的初始顺序......我不明白错误在哪里:/

这是一个简单的脚本:

#!/bin/bash

echo -e "Workspace\n----------";
lsb_release -a

echo -e "\nBash version\n----------";
echo -e $BASH_VERSION."\n";

declare -A groups;
groups["group1"]="123";
groups["group2"]="456";
groups["group3"]="789";
groups["group4"]="abc";
groups["group5"]="def";

echo -e "Result\n----------";
for i in "${!groups[@]}"
do
    echo "$i => ${groups[$i]}";
done
Run Code Online (Sandbox Code Playgroud)

输出 :

Workspace
----------
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.2 LTS
Release:    14.04
Codename:   trusty

Bash version
----------
4.3.11(1)-release.

Result
----------
group3 => 789
group2 => 456
group1 => 123
group5 => def
group4 => abc
Run Code Online (Sandbox Code Playgroud)

为什么我没有"group1","group2"等?

我不希望有一个alphanum顺序,我只是想循环遵循数组的初始声明的顺序...

有办法吗? …

arrays bash loops

21
推荐指数
3
解决办法
9366
查看次数

如何在每个"exec"命令中执行Docker镜像的入口点?

在尝试使用Dockerspec测试Dockerfiles后,我终于遇到了一个无法正确解决的问题.

我认为问题来自Docker本身; 如果我理解它的进程,一个Entrypoint只在运行时执行,但如果容器保持启动并且我启动了一个"exec"命令,则不会重新调用它.

我认为这是通缉行为.

但是,如果入口点是" 古薮 "脚本,我之前所有的命令,这是个问题......


"myImage"有这个入口点: gosu 1000:1000 "$@"

如果我发布: docker run -it myImage id -u

输出为"1000".

如果我开始一个容器: docker run -it myImage bash

在此容器中,id -u输出"1000".

但是如果我在这个容器中启动一个新命令,它会启动一个新的shell,并且不执行Entrypoint,所以: docker exec CONTAINER_ID id -u

输出"0",因为新shell以"root"身份启动.


有没有办法每次执行入口点?或者重新使用shell打开?

或者更好的方法呢?

或者,也许我什么都不懂?;)

谢谢 !


编辑

在阅读了这里提出的解决方案之后,我明白问题不在于Docker如何工作,而在于Serverspec如何工作; 我的目标是直接测试命令作为docker run参数,但Serverspec启动容器和测试命令docker exec.

因此,最好的解决方案是找到如何获取docker runServerspec执行的stdout.

但是,在我的个人用例中,最好的解决方案可能是不使用Gosu但是--user flag :)

bash shell entry-point docker dockerfile

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

如何在 Angular 加载其模块之前获取异步数据

我正在尝试将变量注入到forRoot({[...]})Angular 模块的方法中。

我以异步方式获取了这个变量,所以我尝试引导 Angular之前获取它。(它来自cordova.js

问题:

似乎 Angular 在引导之前导入模块(并调用“forRoot”方法)。

有没有办法实现这一目标?

谢谢 !


我尝试过的一个例子:

app.module.ts

import {NgModule} from '@angular/core';
import {AgmCoreModule} from '@agm/core';

@NgModule({
  imports: [
    AgmCoreModule.forRoot({
      apiKey: window['device'].platform, // value is 'null' instead of 'browser' or something else
      libraries: ['places']
    })
  ],
  // [...]
  bootstrap: [AppComponent]
})

export class AppModule {
}
Run Code Online (Sandbox Code Playgroud)

src/main.ts

import { enableProdMode } from '@angular/core';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';

import { AppModule } from './app/app.module';
import { …
Run Code Online (Sandbox Code Playgroud)

module cordova angular phonegap

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

cURL实时输出CLI

我尝试在shell脚本中有一个网页的"实时输出"; 解释,一个小例子:

这个"localhost/index.php"是这样的:

<?php
header('Content-type: text/html; charset=utf-8');
echo 'Start<br />'.PHP_EOL;
for( $i = 0 ; $i < 10 ; $i++ )
    {
        echo '.';
        flush();ob_flush();
        sleep(1);
    }
echo PHP_EOL.'<br />End';
?>
Run Code Online (Sandbox Code Playgroud)

我想写一个shell脚本,允许每秒出现的屏幕上有"点".

如果我试试这个:

#!/bin/bash
curl 'localhost/index.php'
Run Code Online (Sandbox Code Playgroud)

它仅显示每个分隔线后的输出...不是每次更新后(或PHP脚本中的"echo")如果管道这个,所有输出将显示在最后:/

有没有办法让实时输出,比如在浏览器中?

curl command-line-interface output

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

如何使用 Angular appShell 构建添加子资源完整性

我使用 Angular CLI 9 构建了一个应用程序。我package.json使用以下命令修补了该文件:

{
  "scripts": {
    "build:prod": "ng build --prod --subresource-integrity",
    "prebuild:prod": "TS_NODE_COMPILER_OPTIONS='{\"module\": \"commonjs\"}' ts-node ./sitemap_generator.ts"
  }
}
Run Code Online (Sandbox Code Playgroud)

因此,当我调用 时npm run build:prod,我的 2 个命令将被执行,并且编译器生成的输出文件包含 SRI。

现在,我添加了 appShell :

npm run ng generate appShell -- --client-project my-project

要使用appShell运行构建,我必须使用以下命令:

npm run ng run my-project:app-shell:production

主要问题

但是这个命令调用文件my-project:build:production的配置angular.json,并且不接受参数--subresource-integrity:/

如何修补它以使用SRI 进行 appShell 生产构建?

勇敢者的第二个问题

此 appShell 构建server/在 中创建一个文件夹dist/。它只包含一个main.js文件。我想它在 Node 内部使用来构建 appShell ;有人可以证实吗?那么,我也可以使用 Unversal …

build server-side-rendering app-shell angular-cli-v9

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