12

我试图用变量的内容编写一个文件,但是如果该文件不存在,请创建它:

到目前为止,我得到了这个:

echo "$Logstring" >> $fileLog

我缺少什么,因为当文件不存在时出现错误。if 条件是必要的吗?

4

2 回答 2

15

使用touch命令:

touch $fileLog
echo "$Logstring" >> $fileLog
于 2018-06-21T23:29:04.553 回答
6
   #! /bin/bash
   VAR="something to put in a file"
   OUT=$1
   if [ ! -f "$OUT" ]; then
       mkdir -p "`dirname \"$OUT\"`" 2>/dev/null
   fi
   echo $VAR >> $OUT

   # the important step here is to make sure that the folder for the file exists
   # and create it if it does not. It will remain silent if the folder exists.

$ sh out hello/how/are/you/file.out
geee: ~/src/bash/moo
$ sh out hello/how/are/you/file.out
geee: ~/src/bash/moo
$ sh out another/file/lol.hmz
geee: ~/src/bash/moo
$ find . 
.
./out
./another
./another/file
./another/file/lol.hmz
./hello
./hello/how
./hello/how/are
./hello/how/are/you
./hello/how/are/you/file.out
geee: ~/src/bash/moo
$ cat ./hello/how/are/you/file.out
something to put in a file
something to put in a file
geee: ~/src/bash/moo
$ cat ./another/file/lol.hmz 
something to put in a file

如果文件的文件夹名称中有空格,则需要转义的 " 用于 dirname。

于 2012-09-21T19:02:24.550 回答