我正在编写一个bash脚本,该脚本执行一个返回带有
形式的字符串的命令/ folder / file_NNNN llll.killAt =“nn ... nn”
我想做以下
我的bash技能有限。我尝试通过发出
来识别killAt部分的索引ndx=`expr index "$rslt" killAt`
这个想法是,一旦我掌握了索引,我就可以提取数字位并对其进行处理。但是,我在ndx中获得的并不是KillAt的所有位置,所以我犯了一个错误。我不确定/, - 和“在要搜索的字符串中是否存在问题。
我可以通过运行PHP脚本来完成上述所有操作,但如果我这样做会更多,因为我无法正确使用bash脚本。我非常感谢这里的任何帮助。
答案 0 :(得分:3)
expr
实际上只需要在POSIX shell中进行正则表达式匹配。其所有其他功能都在bash
本身实现。
# A regular expression to match against the file name.
# Adjust as necessary; the (.*) is capture group to
# extract the timestamp.
regex='/folder/file_???? ????\.killAt="(.*)"'
# Match, and if it succeeds, retrieve the captured time
# from the BASH_REMATCH array.
if [[ $rslt =~ $regex ]]; then
ndx=${BASH_REMATCH[1]}
if (( ndx > $(date +%s) )); then
rm "$rslt"
fi
fi