我正在编写这个脚本作为快速草稿。它会打开带有日期和时间的文本编辑器,以便我可以插入一些草稿文本以快速保存。
1.首先,我想将日期和时间附加在文件的开头而不是末尾,就像现在>> $file
一样。但我想这并不那么容易,所以这不是我的首要任务。
2.我定义了一个参数$1
。如果我只有几个词要插入,我相信最好是运行draft "foo foo"
而不是打开编辑器只写几个词。
嗯,它正在工作,但根据参数,最后一行是不必要的。所以我想将其设为条件行。如果我没有通过任何参数,则打开编辑器;其他都没有。
有什么帮助可以改进我的脚本吗?
#!/bin/bash
file=rascunho
folder=/home/$USER/
#linha=$(wc -l < $file)
content=$1
#rm $folder$file
printf "\n\n" >> $file
#echo " " >> $file
echo "------< $(date "+%b %d, %Y - %H:%M:%S") >------" >> $file
echo "$1" >> $file
exec leafpad $file
答案1
您可以使用if
来检查。例如,您可以执行类似的操作,而不是上面脚本中的最后两行:
if [ -n "$1" ]; then
echo "$1" >> $file
else
exec leafpad $file
fi
这表示:如果第一个参数不是空字符串(这就是-n
test 的作用),则运行echo
,否则运行leafpad
。
您可以在这里阅读更多相关内容:
答案2
为了更通用,请使用"$@"
--"$1"
这可以让你写
draft use many words without quoting.
#!/bin/bash
file=rascunho
printf "\n\n------< %s >------\n" "$(date "+%b %d, %Y - %T")" >> $file
# if any arguments were given, write them to the file, else edit the file
if [[ $# -gt 0 ]]; then
echo "$@" >> $file
else
exec leafpad $file
fi
要在文件开头写入一行,可以使用分组结构:
{ echo "first line"; cat $file; } > temp && mv temp $file