オプションのパラメータを使用するには?

オプションのパラメータを使用するには?

私はこのスクリプトを簡単なドラフトで書いています。日付と時刻を含むテキストエディタが開かれているため、迅速な保存のためにドラフトテキストを挿入できます。

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

これは、最初の引数が空の文字列でない場合(-ntestが実行するアクション)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

関連情報