我尝试使用awk从行中提取股票值,并将其存储在变量stock中。然后,我尝试将其减少1,并更新该行中的相同位置。但是,更新过程似乎不能正常工作。
如果livros stock是71,当函数vender_livro()被调用时,livros.txt(存储数据)中的stock将变为70。
*livros的输出工作,显示右行。
***stock(stock=$(echo“$linha”)的输出|awk '{print $6}'))
返回正确的值。**
*减少库存工程的值(“stock=$(($stock - 1))”)。
问题:
sed -i“s/$titulo[^ ]* $stock/$titulo $stock/”livros
未正确替换新值。
books.txt中的数据按以下顺序显示:
“作者标题描述类型页码股票价格”
功能:>
vender_livro() {
echo " -----------------"
echo " | Sell Book |"
echo " -----------------"
read -p "Enter the title of the book to sell: " titulo
if grep -q "$titulo" livros; then
linha=$(grep "$titulo" livros)
stock=$(echo "$linha" | awk '{print $6}')
stock=$(($stock - 1))
sed -i "s/$titulo[^ ]* $stock/$titulo $stock/" livros
echo "Book sold successfully!"
else
echo "No book found in the database."
fi
echo
read -p "Press Enter to continue" continue
clear
}
3条答案
按热度按时间hrirmatl1#
修改前
修改后
bvjveswy2#
unhi4e5o3#
“expr”不见了,所以当试图减少股票时,var $stock是一个字符串而不是int。
为了替换文件中的行,我将sed改为awk。