我有一个格式化的文本文件,其中包含商店项目的详细信息。
item:username:quantity:price
所以它会像
Nike - Rucksack:testingabc:01:25.00
允许商店所有者跟踪商店中的商品。
我已尝试过以下代码,但我想在输入之前检查该项是否存在。
function addnewitem
{
echo -n "Item: " ; read ITEM
echo -n "Username: " ; read USERNAME
result="$(grep -q "$ITEM" ItemStored.txt)"
echo "$result"
if [ $result -eq "1" ] ; then
echo "Error! Item already exists!"
else
echo -n "Quantity: " ; read QUANTITY
echo -n "PRICE : " ; read PRICE
echo "$ITEM:$USERNAME:$QUANTITY:$PRICE" >> ItemStored.txt ;
echo "New item '$ITEM' has been added successfully!"
fi
进入时,我收到了这样的错误。 [:-eq:一元运算符预期
答案 0 :(得分:0)
您需要的是-c
而不是-q
:
result=$(grep -c "$ITEM" ItemStored.txt)
错误是由$result
没有任何值(-q
grep
抑制输出)导致您的命令变得像
if [ -eq "1" ] ; then
如果您也在Bash中,那么使用[[ ]]
而不是[ ]
是值得称道的,因为前者不会对词汇分割和路径名扩展这样的条件表达式做不必要的事情。
请参阅Word Splitting和Filename Expansion (prev. Pathname Expansion)