在下面的 bash 脚本中,我检查文件是否存在,如果不存在,我创建它并编写一个简单的片段。它工作过一次(我不知道为什么),但我想我已经改变了一些东西并且它不再工作了,我找不到我的错误:
#...
template_file="~/mytest_template.c";
if [[ -z $template_file ]]; then
echo -e "#include <stdio.h>\n#include <stdlib.h>\n\n\nint main(int argc, char**argv){\n\n\t\n\nreturn 0;\n}" > ~/mytest_template.c;
fi
#sleep 0.5; ---> I tried this too.
cp ~/mytest_template.c mytest.c;
我得到的错误是这样的:
cp: cannot stat '/home/username/mytest_template.c': No such file or directory
谢谢。
-z
运算符测试字符串是否为空。在这里, 的值template_file
不为空,因为您刚刚分配给它。因此,里面的命令if
不会运行。如果该文件在脚本运行之前不存在,那么它在运行时也不存在
cp
。我不确定你要在这里测试什么,但是如果你想创建文件以防它不存在,那么你想使用
! -f $filename
.-f
测试文件是否存在,并!
反转测试。另请注意,在分配中,波浪号没有展开,而是保持原样,因为它在引号内:
您没有在后续重定向或
cp
命令中使用该变量,因此您不会因此而遇到问题。所以,