在某些情况下忽略部分脚本?

在某些情况下忽略部分脚本?

我的脚本看起来像这样

strenggen ( ) { something; }

strengen 1 
strengen 2
strengen 3
strengen 4
strengen 5
etc..

它将一些文件添加到名为 等的目录中strengen?string=1strengen?string=2我想做的是,如果我退出脚本,然后再次运行它,我希望它找到最后运行的数字,无论是 13、14, 60000 或 140000。由于文件名包含最后一个数字,我想我可以查找最后修改的文件并复制该数字(例如find . -type f -print0 | xargs -0 stat -f "%m %N" | sort -rn | head -1 | cut -f2- -d" "或类似的东西)。如果我 sed 该字符串,我可以获得开始的数字,但我不知道如何忽略其他行?

答案1

以下命令将把最新的“strengen”文件的编号放入变量中$LATEST

LATEST=$(/bin/ls -1t | grep `^strengen` | head -1 | sed -e 's/strengen.*=//')

我在这里使用的/bin/ls不仅仅是ls,为了消除可能影响输出的任何别名ls -1-ls是非常常见的别名。

另请注意,ls我使用的选项是-1(数字一)而不是-l(字母l)。这告诉ls我们每行列出一个文件。该-t选项指示ls按时间排序,最近的排在最前面。

另一种选择是将类似以下内容放在函数的顶部strenggen()

[ -e "strengen?string=$1" ] && return

如果文件已经存在,这将导致函数立即返回而不执行任何操作。

相关内容