如何使用可选参数?

如何使用可选参数?

我正在编写这个脚本作为快速草稿。它会打开带有日期和时间的文本编辑器,以便我可以插入一些草稿文本以快速保存。

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

这表示:如果第一个参数不是空字符串(这就是-ntest 的作用),则运行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

相关内容