Bash回音状态

Bash回音状态,bash,echo,Bash,Echo,我正在尝试创建一个bash脚本,它将显示多个服务的状态。 我创建的用于显示状态的函数如下所示: printStatus() { if checkProcess "${1}"; then echo -e "${1} status: \t\t [RUNNING]" else echo -e "${1} status: \t\t [DOWN]" fi } Mysql status: [RUNNING] PHP-fpm status:

我正在尝试创建一个bash脚本,它将显示多个服务的状态。 我创建的用于显示状态的函数如下所示:

printStatus() {
  if checkProcess "${1}"; then
    echo -e "${1} status: \t\t [RUNNING]"
  else
    echo -e "${1} status: \t\t [DOWN]"
  fi
}
Mysql status:            [RUNNING]
PHP-fpm status:          [RUNNING]
问题在于,
$1
具有可变大小,例如,这会创建以下结果:

Mysql status:        [RUNNING]
PHP-fpm status:          [RUNNING]
我如何才能使
[运行]
标记完美地相互隐藏? 因此,我希望它如下所示:

printStatus() {
  if checkProcess "${1}"; then
    echo -e "${1} status: \t\t [RUNNING]"
  else
    echo -e "${1} status: \t\t [DOWN]"
  fi
}
Mysql status:            [RUNNING]
PHP-fpm status:          [RUNNING]
编辑-解决 以下是我的功能:

printStatus(){
如果选中进程“${1}”;则
printf“%-30s%s”“${1}状态:“[正在运行]”
其他的
printf“%-30s%s”“${1}状态:“[DOWN]”
fi

echo 35;使用printf而不是echo。示例:

printf "%-16s%s" "${1}" "[RUNNING]"

您必须将格式化的长度调整到您的最大期望值。

使用printf而不是echo进行此类操作。例如:

printf "%-30s%s" "left justified text" "[status]"

如果您的进程名称比您选择的长度长,则它们将丢失对齐(即,
printf
不会截断)。

关于您的解决方案,只需在
If
语句中设置一个变量
status=RUNNING
status=DOWN
,然后使用
print“%-30s%s\n”“${1}status:”“$status”
。这是我实际功能的缩小版,它不仅仅是打印状态;)可能的副本