我對編寫bash相當陌生,我對代碼的錯誤/問題有點困惑。我有兩個主要問題。如果P)
我想看看是否存在某個文件。如果存在,我想用newbalance
更新balance
。使用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
當我重定向echo來修改文件時,代碼工作。現在,我試圖執行sed
代碼已停止工作,我不確定是什麼導致它。我試過使用find
與sed
,但那也行不通。我看過多個堆棧溢出問題,但這些例子與我的類似。
這是我處理
[email protected] John Boat
APT-5B 1100.00 100.00 2017-10-02
'newbalance'和'='之間有空格。應該是'newbalance = $(...' –
'newbalance'是一個註冊商標。在結束麻煩之前,您應該使用不同的變量名稱。 – hek2mgl
在你的文件中包含一組樣本行,以便清楚你處理的數據類型。 – codeforester