如何将变量剪切为子变量

时间:2015-01-19 15:42:40

标签: shell awk cut

我有一个变量,哪个商店包含

  

书名:作者:PRICE:QUANTITY:SOLDQUANTITY

在这种情况下是

  

皱纹及时:我的作者:50.00: 20 :50

我将它存储在

Result=`awk -F : -v "Title=$1" -v "Author=$2" 'tolower($1) == tolower(Title) && tolower($2) == tolower(Author)' BookDB.txt`

但是我想把它分成4个变量,比如

TITLE= "wrinkle in time"
AUTHOR= "myauthor"
PRICE= "50.00"
Quantity= "20"
UNIT= "50"

然后我想对售出的单位进行计算

  

输入已售出单位:3

     

皱纹及时,我的作者,50.00,20,50

     更新后

     

及时皱纹,myauthor,50.00,17,53

在此先感谢您的帮助,非常感谢!!!

1 个答案:

答案 0 :(得分:2)

您可以使用$result

read分隔为您描述的不同变量
IFS=: read TITLE AUTHOR PRICE QUANTITY UNIT <<< "$result"

示例:

$ result="wrinkle in time:myauthor:50.00:20:50"
$ IFS=: read TITLE AUTHOR PRICE QUANTITY UNIT <<< "$result"
$ echo "$TITLE - by - $AUTHOR"
wrinkle in time - by - myauthor

您还可以使用read提示用户输入:

read -p "Enter units sold: " SOLDUNITS

这将存储在变量$SOLDUNITS中输入的值。然后,您可以根据需要使用此更改$QUANTITY$UNIT。要在bash中执行(整数)算术,您可以使用$((expression))构造:

QUANTITY=$((QUANTITY-SOLDUNITS)) 

或者:

((QUANTITY-=SOLDUNITS))