Fish - 下载前删除文件

Fish - 下载前删除文件

我运行fishshell,当我尝试删除未找到的文件时,它给出了异常。我有以下脚本:

#!/usr/bin/fish

set files "/tmp/*.xlsx"
rm  -f "$files"
echo "$files"
set tmpfile (mktemp -u).xlsx
curl http://localhost:18085/myService -o "$tmpfile"  -s
xdg-open "$tmpfile"

当我像这样运行它时,变量files具有所有模式的完整列表。但如果其中之一无法删除(例如仍然打开)-则不会删除任何一个。

我有两个问题:

  1. 删除文件的最佳方法是什么?
  2. 由于我正在开发,有时该文件不会被curl.如何检查并仅打开下载是否成功? (检查是否存在或检查文件大小是否>0或??)

答案1

看起来您正在像对 sh 进行编程一样对 Fish 进行编程。尝试“释放你的思想”,摆脱这些限制。

  1. 鱼变量值为列表字符串:我将扩展全局并存储文件列表 - 即删除引号:
    set files /tmp/*.xlsx
    
  2. 然后您向 rm 提供扩展的文件列表
    rm  -f $files
    

与上述无关:您可以要求mktemp附加后缀(假设是 GNU coreutils)

set tmpfile (mktemp -u --suffix=.xlsx)

然后$tmpfile可以不带引号使用。

相关内容