Bash回音状态
我正在尝试创建一个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:
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”
。这是我实际功能的缩小版,它不仅仅是打印状态;)可能的副本