Bash - 将项添加到文本文件中

时间:2014-08-02 07:17:50

标签: bash shell

我有一个格式化的文本文件,其中包含商店项目的详细信息。

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:一元运算符预期

1 个答案:

答案 0 :(得分:0)

您需要的是-c而不是-q

result=$(grep -c "$ITEM" ItemStored.txt)
  • 当在分配旁边时,双引号是可选的,因为在其中不会发生分词。

错误是由$result没有任何值(-q grep抑制输出)导致您的命令变得像

if [  -eq "1"  ] ; then

如果您也在Bash中,那么使用[[ ]]而不是[ ]是值得称道的,因为前者不会对词汇分割和路径名扩展这样的条件表达式做不必要的事情。

请参阅Word SplittingFilename Expansion (prev. Pathname Expansion)