繁体   English   中英

Bash脚本仅在bash脚本文件所在的路径中起作用

[英]Bash script is working only in path where is bash script file

我想获取目录中的最后一个(最新)文件。 这个脚本适用于我拥有bash文件的目录。 当我将路径更改为另一个路径时,问题在last_modified 脚本看不到file -我想,但我不知道为什么。 有人可以帮忙吗?

下面是我的test.sh文件中的代码

#!/bin/bash

file=$(cd '/path_where_is_test.sh_file' && ls -t | head -1)
last_modified=$(stat -c %Y $file)
current=$(date +%s)

if (( ($current - $last_modified) > 86400 )); then
    echo 'Mail'
else
    echo 'No Mail'
fi;

问题是您在cd之后使用ls到特定目录。 ls的输出只是一个没有路径的文件名。 稍后,您将该文件名传递给stat命令,而没有路径。 如果您当前的目录不同,则stat将找不到该文件。

可能的解决方案:

  • 将目录( dir )添加到stat命令

     dir='/path_where_is_test.sh_file' file=$(cd "$dir" && ls -t | head -1) last_modified=$(stat -c %Y "$dir/$file") 
  • 使用更改后的目录

     last_modified=$(cd '/path_where_is_test.sh_file' && stat -c %Y $(ls -t | head -1)) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM