0
#!/bin/bash

library=mylibrary

tmp=mylibrary.tmp

function add_book {

echo Please enter the book title:

read title

existed=`awk -F '$1 == $title' $library | wc -l`

  echo $existed

  if (( $existed == 0 ))

  then 

    echo Please enter the author:

    read author

    location=library

    updated=$title,$author,$location,`date +%F`

    echo $updated >> $library

    echo $updated return successfully!

  else

    echo "Book Exist!"

  fi 

((私がやりたいことは、タイトルを比較し、タイトルが存在する場合は「書籍が存在します」とエコーすることです

入力をテキストファイルと比較したい))

サンプル テキスト ファイルは次のとおりです。

Title,Author,Location,Date Added

jj,jj,library,2013-11-14

hjj,hj,library,2013-11-14

jhj,hjh,library,2013-11-14
4

1 に答える 1

0

あなたのスクリプトにはかなりの問題がありますが、これはブロッカーの問題のようです:

existed=`awk -F '$1 == $title' $library | wc -l`

それを次のように変更します。

existed=$(awk -v title="$title" -F '$1 == title{i++} End{print i}' "$library")
  1. SHELL は一重引用符内で varialle を展開しません
  2. シェル変数を awk に渡すには、-v name="$value"構文を使用します
于 2013-11-14T20:48:35.360 に答える