gpt4 book ai didi

linux - Bash 中没有这样的文件或目录?

转载 作者:太空宇宙 更新时间:2023-11-04 09:10:04 24 4
gpt4 key购买 nike

我的 bash 脚本。完成后,它收到 line 9: 1570066642: No such file or directory

#!/bin/bash

DATE=$(date "+%s")

while read p; do

IFS=',' read -ra my_array <<< "$p"

if [ "${my_array[1]}" < "${DATE}" ] ; then
continue
fi

echo "$p" >> my_file.txt

done <cache_data.txt

mv my_file.txt cache_data.txt

我想检查以时间戳秒为单位的日期之间的差异。

最佳答案

使用 ((用于算术运算。

if ((${my_array[1]} < DATE)); then

如果你使用 [那么你需要改变<-lt .不像(( , [不是特殊的 shell 语法。它只是一个带有不常见的单个字符名称的常规命令,这意味着 shell 解释 <作为文件重定向而不是小于运算符。

if [ "${my_array[1]}" -lt "${DATE}" ] ; then

您可以简化 read电话。而不是阅读整行然后调用 read第二次解析以逗号分隔的字段,您可以同时执行这两项操作。

您也不需要将结果读入数组。 read可以一次分配给多个变量。

最后,如果你提升 >> my_file.txt重定向到循环之外,您可以避免每次迭代都打开和关闭文件,这是一个很好的优化。

while IFS=',' read -r field1 timestamp rest_of_line; do
((timestamp >= DATE)) || continue
echo "$field1 $timestamp"
done <cache_data.txt >my_file.txt

我喜欢用 &&||作为 if 的简写和 if ! .它们是用于快速测试的常见 shell 脚本习惯用法。我用过 ||以上为演示。您可能会发现它或多或少具有可读性。意见不一。

关于linux - Bash 中没有这样的文件或目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58211287/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com