私はかなりbashを書くことに新しいです、そして、私は自分のコードでエラー/問題を少し混乱させています。私には2つの大きな問題があります。場合はP)
私は、特定のファイルが存在するかどうかを確認したいと思います。存在する場合はbalance
をnewbalance
に更新したいと考えています。文字列の下位にgrepとsedを使用していますか?
P) read -p "Enter email: " email
read -p "Enter payment amount: " payment
newbalance=$(echo $payment + $balance | bc)
if [ -f $email ]; then
sed -i "s/$balance/$newbalance/" $email
#also tried
#find . -type f -name "$email" -exec sed -i "s/${balance}{newbalance}/" {} \;
else
echo -e "Error: customer not found\n\n"
fi
balance=$newbalance
continue
;;
私はエラーが表示されるように100.00
などpayment
に読み取ろう:
(standard_in) 2: syntax error
sed: -e expression #1, char 0: no previous regular expression
自己は非常に単純で、バランスは一度だけ表示されるファイル形式。
email name
apt-XX rent balance duedate
エコーをリダイレクトしてファイルを変更したときにコードが機能しました。今度はsed
を実装しようとしましたが、コードが動作を停止しました。原因を特定できません。私はとsed
を使ってみましたが、どちらもうまくいきません。私は複数のスタックオーバーフローの質問を見てきましたが、例は私のものと似ています。
これは、私はあなたが計算、BCの必要はありませんを行うためにはbashを使用することができます
[email protected] John Boat
APT-5B 1100.00 100.00 2017-10-02
あなたは 'newbalance'と' = 'の間にスペースを入れます。 'newbalance = $(...' –
'newbalance'は登録商標です。トラブルに終わる前に別の変数名を使うべきでしょう。 – hek2mgl
ファイルの行のサンプルセットを含めて、扱っているデータの種類を明確にします。 – codeforester