0

宿題用のミニ ライブラリの bash スクリプトを作成しようとしていますが、リクエストの 1 つは、ユーザーがレンタルした本を一覧表示することです。以下のように関数をビルドしますが、4 行目の awk コマンド置換に $name 変数を渡すにはどうすればよいですか? ライブラリファイルは次のような形式です

タイトル、著者、ユーザー、日付

function list_user_books {
echo Enter Name
read name
input=`awk -F, '$3=="$name"' $library | wc -l`
if (( $input == 0 ))
    then 
    echo No Books Found For This User 
else
for l in `awk -F, '$3=="$name"' $library`
do
    echo $l
done
stop=0
while (( $stop == 0 ))
do
    echo
    echo "=========================="
    echo "(t) Try again"
    echo "(b) Back to main menu"
    echo -n 'Choose Option to Continue'
  read reply
  case $reply in 
  "t") stop=1; list_user_books;;
  "b") stop=1; main_menu;;
  *) echo illegal choice, enter again:
  esac
done    
}
4

1 に答える 1

2
[bash_prompt$]l=hi; echo "hi there" | awk -v i=$l '$1==i'
hi there

上記の例は、-v オプションが bash 変数を awk 変数に転送する方法を示しています。これを使用する必要があります

于 2013-11-11T06:10:05.807 に答える