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))
我想获取目录中的最后一个(最新)文件。这个脚本适用于我有 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))