我在 Alpine Linux 3.20 系统上的个人 crontab 中有一个时间表,每周二至周日(即除周一外的所有日子)的 00:10 运行:
10 0 * * 2-7 "$HOME/local/sbin/backup.sh" prune-daily
这似乎也会在周一触发。为什么?
请注意,我最初的报告将症状描述为“周日不运行”。我记错了发生了什么,抱歉。在更彻底地调查症状后,我已更正了症状描述。crontab 计划是正确的,因为它从一开始就是正确的。
我在 Alpine Linux 3.20 系统上的个人 crontab 中有一个时间表,每周二至周日(即除周一外的所有日子)的 00:10 运行:
10 0 * * 2-7 "$HOME/local/sbin/backup.sh" prune-daily
这似乎也会在周一触发。为什么?
请注意,我最初的报告将症状描述为“周日不运行”。我记错了发生了什么,抱歉。在更彻底地调查症状后,我已更正了症状描述。crontab 计划是正确的,因为它从一开始就是正确的。
假设我有一个像这样的 bash 函数:
gmx(){
echo "foo";
}
这个函数会隐式返回命令的退出值echo
,还是需要使用 return?
gmx(){
echo "foo";
return $?
}
我假设 bash 的工作方式,bash 函数的最终命令的退出状态是“返回”的状态,但不是 100% 确定的。
从 Advanced Bash-Scripting Guide 中,获取最后一个命令行参数:
或者:
lastarg=${!#}
这是 对变量的间接引用。 请注意,这不起作用。$#
lastarg=${!$#}
是否有一种简单(最好是命令行)的方法来反转 PDF 文件中的页面?
Unix文件系统通常有一个inode表,这个表中的条目数通常在文件系统创建时是固定的。这有时会导致拥有大量磁盘空间的人收到关于没有可用空间的令人困惑的错误消息,即使在他们找出问题所在之后,也没有简单的解决方案来解决它。
但是(在我看来)似乎非常希望通过按需分配 inode 来避免这整个混乱,对用户和系统管理员完全透明。如果您喜欢可爱的 hack,您甚至可以将 inode 表本身变成一个文件,从而重用您已有的在磁盘上查找可用空间的代码。如果幸运的话,您甚至可能会在文件本身附近使用 inode,而无需明确尝试实现此结果。
但是(据我所知)没有人真正做到这一点,所以我可能遗漏了一个问题。知道它可能是什么吗?
使用https://regex101.com/我构建了一个正则表达式来返回字符串中第一次出现的 IP 地址。
正则表达式:
(?:\d{1,3}\.)+(?:\d{1,3})
RegExp 包括分隔符:
/(?:\d{1,3}\.)+(?:\d{1,3})/
使用以下测试字符串:
eu-west 140.243.64.99
它返回一个完整的匹配:
140.243.64.99
无论我尝试使用锚点等,以下 bash 脚本都不适用于生成的正则表达式。
temp="eu-west 140.243.64.99 "
regexp="(?:\d{1,3}\.)+(?:\d{1,3})"
if [[ $temp =~ $regexp ]]; then
echo "found a match"
else
echo "No IP address returned"
fi
操作系统:Ubuntu 16.04.3
外壳:重击 4.3.48
我知道可以临时更改变量的内容,例如var=value command
,这可能IFS= read -r var
是最值得注意的情况。
而且,感谢 Greg 的 wiki,我也明白:
# Why this
foo() { echo "$var"; }
var=value foo
# And this does work
var=value; echo "$var"
# But this doesn't
var=value echo "$var"
让我无法理解的是:
$ foo() { echo "${var[0]}"; }
$ var=(bar baz) foo
(bar baz)
据我所知(并遵循前面示例的逻辑),它应该打印bar
,而不是(bar baz)
.
这只发生在我身上吗?这是预期的行为,我错过了什么吗?或者这是一个错误?
我最近看到一个视频,有人^foo^bar
在 Bash 中执行。那个组合是干什么用的?