Вы должны изменить это на это:
#!/bin/bash
BOOKFILE="/home/sk/GUTINDEX.ALL"
author=$@
if [[ -z "$author" ]]; then
read -rp "Author name: " author
fi
grep "$author" "$BOOKFILE"
Если вы запустите его как:
$./script Frank Lockwood
Вы устанавливаете позиционный параметр 1 на Frank
и параметр 2 на Lockwood
. Параметр 2 не используется в вашем скрипте. $@
— это массив, который будет представлять все позиционные параметры.
Кроме того, если вы разрешите read
установить вашу переменную author
в строку с пробелами, это приведет к ошибке в строке grep без кавычек author
.