我已经阅读了其他一些问题,我觉得我和其他人一样,但我找不到文件.
file="~/.todo/$1.task"
if [ ! -f "$file" ]; then
echo "Error. Task ~/.todo/$1.task not found."
ls ~/.todo/
exit 1
fi
Run Code Online (Sandbox Code Playgroud)
当del被调用时,这是在函数内部....所以使用这个命令,这是输出:
$ ./todo.sh del 19
Error. ~/.todo/19.task not found.
10.task 13.task 16.task 1.task 6.task 9.task tododatesorted
11.task 14.task 18.task 3.task 7.task taskno
12.task 15.task 19.task 4.task 8.task tododates
Run Code Online (Sandbox Code Playgroud)
为什么它真的不存在呢?我试过-e和-f标志虽然我不完全理解其中的区别.
不同之处在于路径名扩展.如果没有~引用,shell会将其扩展到您的主目录.但是当它在引号内时,就像你拥有它一样,它不会被扩展.例如
$ file="~"; echo $file
~
$ file=~; echo $file
/Users/kevin
Run Code Online (Sandbox Code Playgroud)
您可以通过以下两种方式之一修复脚本:
file=~/.todo/$1.task.在像这样的变量赋值的情况下,空格$1不会破坏命令,但是你可以只引用$1你想要的.$HOME改为使用:file="$HOME/.todo/$1.task"| 归档时间: |
|
| 查看次数: |
402 次 |
| 最近记录: |