私はこのスクリプトを簡単なドラフトで書いています。日付と時刻を含むテキストエディタが開かれているため、迅速な保存のためにドラフトテキストを挿入できます。
1.まず、nowのようにファイルの終わりではなく始めに日付と時刻を追加したいと思います>> $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
。たとえば、上記のスクリプトの最後の2行ではなく、次のようにすることができます。
if [ -n "$1" ]; then
echo "$1" >> $file
else
exec leafpad $file
fi
これは、最初の引数が空の文字列でない場合(-n
testが実行するアクション)runを実行し、echo
それ以外の場合はrunを意味します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