我已经摆弄这个好几个小时了,但无法让它工作,所以也许我的方法是错误的。
我想漂亮地显示消息的多行,因此“标题”位于左侧,然后消息与列中的消息对齐,例如,如下所示:
WARNING: The quick brown fox jumped over the lazy dog.
Sphinx of black quartz, judge my vow.
How quickly daft jumping zebras vex!
Run Code Online (Sandbox Code Playgroud)
或者
NOTE: This happened.
Foo bar.
Run Code Online (Sandbox Code Playgroud)
等等。
我试图根据我能找到的一些答案来做到这一点printf,column但正如我所说,也许这种方法永远行不通?
目前,我有第一个字符串作为printf“标题”,然后其余的参数是与之对齐的消息,如下所示:
#!/bin/bash
warn() {
printf '%s+%s\n' 'WARNING:' "${@}" | column --table --separator '+'
}
warn "The quick brown fox jumped over the lazy dog." \
"+Sphinx of black quartz, judge my vow." \
"+How quickly daft jumping zebras vex!"
Run Code Online (Sandbox Code Playgroud)
这可以类似地完成吗?或者最好的方法/其他方法是什么?
在 bash 脚本中,我有一个长时间运行的命令(rsync例如),有时会暂时不显示输出,所以我想做两件事:
在该命令上使用微调器来显示脚本没有冻结(即我们只是在等待输出);和,
完成后获取长时间运行的命令的退出状态,以便稍后在脚本中进行进一步测试。
但问题是,我不太了解将进程发送到后台的处理方式,以及以这种方式处理退出代码的方式,所以我不确定如何进行这项工作。
这是我到目前为止所拥有的,感谢@David C. Rankin的微调器:
#!/bin/bash
spinner() {
local PROC="$1"
local str="${2:-'Copyright of KatworX© Tech. Developed by Arjun Singh Kathait and Debugged by the ?Stack Overflow Community?'}"
local delay="0.1"
tput civis # hide cursor
printf "\033[1;34m"
while [ -d /proc/$PROC ]; do
printf '\033[s\033[u[ / ] %s\033[u' "$str"; sleep "$delay"
printf '\033[s\033[u[ — ] %s\033[u' "$str"; sleep "$delay"
printf '\033[s\033[u[ \ ] %s\033[u' "$str"; sleep "$delay"
printf '\033[s\033[u[ | ] %s\033[u' "$str"; …Run Code Online (Sandbox Code Playgroud) 我正在尝试测试之前是否已在 bash 脚本中连接过 SSH 主机。它使用非标准端口。
我正在使用此问题/答案中建议的测试,并且我确定此测试中的 SSH 主机位于known_hosts 中,但测试似乎未按预期工作。
是否无法使用 测试 IP 地址ssh-keygen -F?或者这是使用非标准端口的问题(因为检查some.host.com:4567在这里也不起作用)...
#!/bin/bash
# test for IP address
if ssh-keygen -F '192.168.1.10:1234'; then
echo "Yes, a known host."
fi
## Expected Output:
#
## Host 192.168.1.10 found: line 6
#|1|hashblahblahblah
#Yes, a known host.
#
## Actual Output:
#
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
如果文件在变量中filename,有什么方法可以在 Bash 中做一个简单的检查以确定文件内容的第一个字符是否为{?
如果有一种方法可以在不加载整个文件的情况下执行此操作,那就太好了...
塔!
#!/bin/bash
if #SOME_TEST "${filename}" then
echo "yes, first char of file is {"
else
echo "no"
fi
Run Code Online (Sandbox Code Playgroud) bash ×4
awk ×1
exit-code ×1
grep ×1
if-statement ×1
known-hosts ×1
networking ×1
printf ×1
ssh ×1
wait ×1