I need to check if the pin that user gives exists and if exists then display their names and surnames… i need it in bash script PS: we’ve got a file with cardpins,name,surname,E/A (accepted or no for other questions) and account balance in this format:
0098876634569080 NIKOLAOU VASILEIOS Ε 25575 0033872234566751 MAVRAGANIS GEORGIOS Α 12345
i’ve done this
read -p "Insert Pin" if ! grep $REPLY filename then echo "ERROR" exit 1 else grep $REPLY filename $V1=grep -c $REPLY filename head -$v1 filename | : and then dunno :P
Advertisement
Answer
As I gather it, this is essentially a question about reading fields from a file. grep
isn’t a good tool — it would give you a match if the PIN were found in a different field (ie. balance), or if the value given were only a substring of a PIN (for instance, if the user entered 0
for their PIN). Consider instead:
read -p "Insert Pin" found=0 while read -r pin name surname has_accepted balance; do # unlike grep, look ONLY in pin field, and ONLY for exact match if [[ $pin = "$REPLY" ]]; then found=1 echo "Name is $name; surname is $surname; balance is $balance; etc" break # don't continue to look after we found a match fi done <filename if ! (( found )); then echo ERROR >&2 exit 1 fi
See BashFAQ #001 for a long-form discussion of reading data in bash.