0

我已经构建了这个小脚本来查找在指定月份修改的文件。

我的脚本在过去四年中运行良好,但从最近的更新,现在使用 bash V4,这将不再工作,我不明白为什么。

有脚本(fmonth.sh):

#!/bin/sh

month=$1
shift

printf "now\n%s-01\n%s-01 00:00 +1 month\n" $month $month |
    date -f - +%s |
    xargs printf "n=%s/60-.5;s=%s/60;e=%s/60;n-s;if (n-e <0) 0 else n-e\n" |
    bc -l |
    xargs printf "find $@ -mmin -%.0f -mmin +%.0f -print0\n" |
    sh |
    xargs -0 /bin/ls -ltrd |
    less -S

这可以按如下方式使用:

fmonth.sh 2012-09 /etc /home/user /root /var/lib
4

1 回答 1

0

好的,我找到了答案:$@可以替换为$*

#!/bin/sh

month=$1
shift

printf "now\n%s-01\n%s-01 00:00 +1 month\n" $month $month |
    date -f - +%s |
    xargs printf "n=%s/60-.5;s=%s/60;e=%s/60;n-s;if (n-e <0) 0 else n-e\n" |
    bc -l |
    xargs printf "find $* -mmin -%.0f -mmin +%.0f -print0\n" |
    sh |
    xargs -0 /bin/ls -ltrd |
    less -S

现在工作正常!

我不确定是否真的明白为什么......现在......我稍后会寻找原因......

于 2012-12-11T11:30:53.147 回答