小编sim*_*905的帖子

如何将bash关联数组往返到文本文件?

我想记住不同脚本运行之间的关联数组。到目前为止,我所拥有的是给定一个包含一个键/值对的文本文件:

(
[james]=bond
)
Run Code Online (Sandbox Code Playgroud)

是一个脚本,用于将其加载到关联数组中,添加到其中,然后以可以重定向到第二个文件的方式将其回显:

#!/bin/bash
file=`cat $1`
key=$2
value=$3
declare -A row="$file"
row[$key]=$value
echo "("
for server in "${!row[@]}"
    do echo "[$server]=${row[$server]}"; done
echo ")"
Run Code Online (Sandbox Code Playgroud)

然后我可以将它运行为:

./arrays.sh file1 honey rider > file2 ; mv file2 file1
Run Code Online (Sandbox Code Playgroud)

给予

(
[james]=bond
[honey]=rider
)
Run Code Online (Sandbox Code Playgroud)

然而它看起来非常笨重。有没有更干净的方法来做到这一点?

bash

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

在 Docker 的后台测试无限循环?

我想在我的 docker 镜像中运行一个后台队列:

\n\n
php artisan queue:work --daemon --sleep=1 --tries=3 &\n
Run Code Online (Sandbox Code Playgroud)\n\n

之后它立即启动httpd运行 PHPlaravel应用程序的 Apache。该laravel应用程序将推送通知发送到 Redis。后台队列工作程序从 Redis 收集消息并通过推送服务发送它们。

\n\n

这有效并且每秒都会注销。如果后台命令崩溃,我希望它重新启动。根据这个答案https://unix.stackexchange.com/a/223780/72040我可以在后台无限运行命令,如下所示:

\n\n
while true; do php $QUEUE_WORK; done &\n
Run Code Online (Sandbox Code Playgroud)\n\n

为了测试这一点,我运行了我的容器,docker run然后docker exec -it登录并查看:

\n\n
UID        PID  PPID  C STIME TTY          TIME CMD\n100000       1     0  0 19:55 ?        00:00:00 httpd -D FOREGROUND\n100000      21     1  0 19:55 ?        00:00:00 /bin/sh -e /tmp/scripts/run\n100000      22    21  1 19:55 ?        00:00:01 php artisan …
Run Code Online (Sandbox Code Playgroud)

shell bash background-process docker

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

内置 .deb 的手册页安装在 Debian 上,但不能安装在 Ubuntu 上

我正在使用 test-kitchen 在不同的发行版上测试包的构建.deb。构建的文件在 Debian 和 Ubuntu 上都可以正常.deb安装该命令。/usr/bin我的问题是 Ubuntu 上没有安装手册页。.debUbuntu 上构建文件的内容是:

kitchen@ceddd8d3564c:/opt/workspace$ dpkg -c $(find . -name \*.deb)
drwxr-xr-x 0/0               0 2018-06-08 14:24 ./
drwxr-xr-x 0/0               0 2018-06-08 14:24 ./usr/
drwxr-xr-x 0/0               0 2018-06-08 14:24 ./usr/bin/
-rwxr-xr-x 0/0           33742 2018-06-08 14:24 ./usr/bin/git-secret
drwxr-xr-x 0/0               0 2018-06-08 14:24 ./usr/share/
drwxr-xr-x 0/0               0 2018-06-08 14:24 ./usr/share/man/
drwxr-xr-x 0/0               0 2018-06-08 14:24 ./usr/share/man/man7/
-rw-r--r-- 0/0            5298 2018-06-08 14:24 ./usr/share/man/man7/git-secret.7
drwxr-xr-x 0/0               0 2018-06-08 14:24 ./usr/share/man/man1/
-rw-r--r-- …
Run Code Online (Sandbox Code Playgroud)

man ubuntu debian dpkg deb

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

标签 统计

bash ×2

background-process ×1

deb ×1

debian ×1

docker ×1

dpkg ×1

man ×1

shell ×1

ubuntu ×1