Bash 输出到同一行,同时保留列

原子链

好吧,乍一看这似乎是一个基本问题,但请听我说。它比标题看起来更复杂!

这是我正在尝试做的目标。我想输出到类似于 Linux 启动的控制台。

Operating system is doing something...                                                 [ OK ]

现在这似乎很明显......只需使用 printf 并设置列。这是第一个问题。控制台需要先打印动作

Operating system is doing something...

然后它需要实际完成工作,然后继续输出到与 [ OK ] 相同的行。

这似乎再次使用 printf 很容易做到。只需完成工作(在这种情况下,调用函数)并返回条件检查,然后完成运行 printf 以输出 [ OK ] 或 [ FAIL ]。这在技术上是有效的,但我在这样做时遇到了很多并发症。这是因为该函数必须在子外壳内调用,而且我无法传递我需要的某些变量。所以printf出来了。

只使用 echo -n 怎么样?那应该工作吧?回显第一部分,运行该函数,然后根据返回到同一行继续回显。这个解决方案的问题是我不能再保留我可以使用 printf 的列格式。

Operating system is doing something...                                             [ OK ]
Operating system is doing something else...                                             [ OK ]
Short example...                                             [ OK ]

我有什么建议可以解决这些问题以获得有效的解决方案吗?谢谢

这是我尝试使用 printf 的另一种方法。这给人一种工作的错觉,但该方法实际上是有缺陷的,因为它没有给你进度指示,即函数在打印出正在运行的函数之前首先运行。“嘿,我在做事”会立即与“嘿,我在做”消息一起打印出来。结果,它毫无意义。

VALIDATE $HOST; printf "%-50s %10s\n" " Validating and sanitizing input..." "$(if [ -z "$ERROR" ]; then echo "[$GREEN   OK   $RESET]"; else echo "[$RED  FAIL  $RESET] - $ERROR"; echo; exit; fi)"
简体中文

没有特别的理由必须将所有 printf 字符串打印在一起,除非您担心您调用的某些代码会移动光标。

重新排序您的示例:

printf "%-50s " " Validating and sanitizing input..."

VALIDATE $HOST

if [ -z "$ERROR" ]; then
    printf "%10s\n" "[$GREEN   OK   $RESET]";
else
    printf "%10s\n" "[$RED  FAIL  $RESET] - $ERROR"
    echo
    exit
fi

我不知道$ERROR它包含什么或它应该显示在哪里。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Bash:如何防止在输出时覆盖同一行?

来自分类Dev

Bash脚本:在同一行中打印列数据

来自分类Dev

Bash如何初始化变量并将其值输出到一行中的文件

来自分类Dev

输出匹配模式,同时保留它们存在的行-bash

来自分类Dev

Bash提示字符串与curl命令输出显示在同一行

来自分类Dev

bash +如何在同一行中合并输出值

来自分类Dev

从一行生成列 [bash]

来自分类Dev

如何在同一bash脚本中将输出文件的每一行作为参数传递给for循环?

来自分类Dev

bash-一次处理输出一行

来自分类Dev

Bash-替换并写入同一行

来自分类Dev

Bash:重写在同一行中读取的文件

来自分类Dev

bash在同一行上显示打印

来自分类Dev

Bash awk 追加到同一行

来自分类Dev

Bash将文本文件存储为变量并在同一行上输出多个变量

来自分类Dev

bash printf-如何在不删除先前输出的情况下在同一行中将文本右对齐

来自分类Dev

如何在bash中执行输出的最后一行?

来自分类Dev

grep输出仅在bash脚本中打印一行

来自分类Dev

BASH:在一行上打印输出

来自分类Dev

如何在bash中执行输出的最后一行?

来自分类Dev

读取bash命令的输出的最后一行

来自分类Dev

Bash-每次启动bash终端时都用同一行注释

来自分类Dev

可以在同一行中重用BASH行的第一个参数吗?

来自分类Dev

从snmpget输出到bash数组

来自分类Dev

在主机名后的同一行上打印一行-操作文本脚本linux bash

来自分类Dev

在bash上使用sed将特定字符串保留在一行中?

来自分类Dev

需要bash脚本输出在一行上-curl和>>产生2行

来自分类Dev

将两行输出合并为一行的 Bash 脚本

来自分类Dev

将命令输出替换为另一个bash命令,但同时保留换行符?

来自分类Dev

将循环数组数据输出到bash中的单独列

Related 相关文章

  1. 1

    Bash:如何防止在输出时覆盖同一行?

  2. 2

    Bash脚本:在同一行中打印列数据

  3. 3

    Bash如何初始化变量并将其值输出到一行中的文件

  4. 4

    输出匹配模式,同时保留它们存在的行-bash

  5. 5

    Bash提示字符串与curl命令输出显示在同一行

  6. 6

    bash +如何在同一行中合并输出值

  7. 7

    从一行生成列 [bash]

  8. 8

    如何在同一bash脚本中将输出文件的每一行作为参数传递给for循环?

  9. 9

    bash-一次处理输出一行

  10. 10

    Bash-替换并写入同一行

  11. 11

    Bash:重写在同一行中读取的文件

  12. 12

    bash在同一行上显示打印

  13. 13

    Bash awk 追加到同一行

  14. 14

    Bash将文本文件存储为变量并在同一行上输出多个变量

  15. 15

    bash printf-如何在不删除先前输出的情况下在同一行中将文本右对齐

  16. 16

    如何在bash中执行输出的最后一行?

  17. 17

    grep输出仅在bash脚本中打印一行

  18. 18

    BASH:在一行上打印输出

  19. 19

    如何在bash中执行输出的最后一行?

  20. 20

    读取bash命令的输出的最后一行

  21. 21

    Bash-每次启动bash终端时都用同一行注释

  22. 22

    可以在同一行中重用BASH行的第一个参数吗?

  23. 23

    从snmpget输出到bash数组

  24. 24

    在主机名后的同一行上打印一行-操作文本脚本linux bash

  25. 25

    在bash上使用sed将特定字符串保留在一行中?

  26. 26

    需要bash脚本输出在一行上-curl和>>产生2行

  27. 27

    将两行输出合并为一行的 Bash 脚本

  28. 28

    将命令输出替换为另一个bash命令,但同时保留换行符?

  29. 29

    将循环数组数据输出到bash中的单独列

热门标签

归档