小编Ste*_*ris的帖子

如何在 ash 中保留环境变量,Almquist shell?

如何让 ash 在启动时加载一些环境变量?

只需将它们放在 /etc/profile 中

/etc/profile 仅为登录 shell 读取;使用 docker(使用 alpine>busybox>ash)时经常弹出的非登录 shell 呢?

如果在环境变量 ENV 中指定,则非登录 shell 将读取文件

太好了,我如何确保设置了 ENV?它本身是一个环境变量,默认为空白。

本质上,我正在寻找一些保证 ash 可以读取的总体配置文件。对 busybox 使用的 ash 版本的偏好(BusyBox v1.28.4,如果你想准确的话)。这样的事情存在吗?是的,我知道 docker 中的 ENV 指令,它可用于在构建 docker 镜像时设置 $ENV;我仍然想知道这在 docker 之外是否可行。

我已经阅读了thisthis以试图理解。

作为旁注,谁能解​​释这种在高山的奇怪行为?

$docker run -it alpine
/ # echo $CHARSET #proof /etc/profile has not run

/ # echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
/ # env -i sh -c 'echo $PATH'
/sbin:/usr/sbin:/bin:/usr/bin
/ # echo $ENV

/ #
Run Code Online (Sandbox Code Playgroud)

当我们可以显示 /etc/profile 没有时,与为新 …

path environment-variables profile ash docker

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

删除从 * 到空行的未知行数

我一直在使用这个论坛,所以我现在才加入!我见过类似的问题,但到目前为止没有任何效果(主要是使用 sed)。我想在文件中找到星号 (*) 的每个实例并删除它以及它之后的所有内容,直到到达一个空行。例如:

*252
253
254
255
(blank line here)
Run Code Online (Sandbox Code Playgroud)

或者

*261
265
(blank line here)
Run Code Online (Sandbox Code Playgroud)

每个数据块的长度会有所不同。然后我想让输出转到一个新文件。有任何想法吗?

sed

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

多次但不同时间打印每一行

我有一个巨大的文件,大约 4000000 行,看起来像这样:

文件:

1 
1 
2 
3 
2 
4 
...
Run Code Online (Sandbox Code Playgroud)

基本上,每一行都包含一个数字。考虑到这个例子,我想生成一个如下所示的文件:

新文件:

1 
1 
2 
2 
3 
3 
3 
2 
2 
4 
4 
4 
4 
....
Run Code Online (Sandbox Code Playgroud)

当 n 是存储在原始行中的数字时,我希望每行重复 n 次。

正如我所提到的,文件非常大,所以我正在寻找最快的方法。我认为目前,我实现的代码瓶颈是我需要重新打开新文件进行写入。

我现在就是这样做的,但速度非常慢

while read i; do seq 1 ${i} | xargs -i -- echo $i >> newFile ;done < file
Run Code Online (Sandbox Code Playgroud)

非常感谢。

large-files

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

将命令传递给在 Linux 机器上等待输入的脚本

我正在尝试在其中运行一个 shell 脚本,我将调用另一个脚本,第二个脚本等待提供一些命令。我已经使用 echo 来传递命令,但它不起作用。第二个脚本继续等待输入。

脚本1:

#!/bin/sh
set -x
sh script2.sh
echo ".open Simulation\n"
set +x
Run Code Online (Sandbox Code Playgroud)

但这不会产生任何结果。它一直在等待。

输出:

./script1.sh
+ sh script2
<Nothing appears here>
Run Code Online (Sandbox Code Playgroud)

shell shell-script

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

If 语句对两个 cmp 结果给出“else”响应

我从以下方面得到了意想不到的结果

COMPARE(){
    if [ ! cmp $IPPATH/ip.old $IPPATH/ip.new >/dev/null 2>&1 ]; then
            echo compare going to create
            CREATE
    else
            echo same
    fi
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试比较文件,如果它们相同,则什么都不做(即 display same,但如果它们不相同,则显示compare going to create然后运行该CREATE函数。

但是,same当文件相同并且它们绝对不相同时,我得到相同的“ ”结果。

这些显示正确(应该如此):

echo `cat $IPPATH/ip.old`
echo `cat $IPPATH/ip.new`
Run Code Online (Sandbox Code Playgroud)

shell-script test

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