Я пытаюсь работать над скриптом bash, который проверяет имя пользователя в аргументе скрипта, а затем выводит соответствующие строки из файлов/etc/passwd и/etc/group (а не/etc/теневой файл). В настоящее время я использую цикл if then else для проверки содержимого каталога/etc/* и вывода соответствующей информации. Мое намерение состояло в том, чтобы вывести простую текстовую строку, если пользователь совпадения не найден в двух файлах, таким образом, это значение равно null. Тем не менее, он выводит информацию, которая абсолютно неверна для того, что я ищу. Как новый пользователь для BASH, а linux является общим, я уверен, что сразу есть некоторые вопиющие проблемы. Тем не менее, я пытаюсь учиться.BASH grep script
Любая помощь с кодом моего сценария или точкой в правильном направлении была бы принята с благодарностью. Спасибо.
#! /bin/bash
USERLOOK='grep -h $USERID ~/etc/* | grep :x:'
grep $1 ~/etc/*
if [ -z $1 ]; then
echo "User not found."
else
echo "$USERLOOK"
fi
exit 0
Вопрос непонятен? Вы хотите ввести имя пользователя в качестве аргумента для скрипта: './script user_to_check'? – sjsam
Вы должны прочитать [quoting] (http://mywiki.wooledge.org/BashGuide/Practices#Quoting) и [подстановка команды] (http://mywiki.wooledge.org/CommandSubstitution). –
@sjsam Да, я хочу иметь функцию скрипта, где я ввожу ./script user_to_check. Если имя пользователя найдено, я хочу вывести все строки, где он был найден, и это было моим аргументом в пользу использования grep. Однако, если имя пользователя не было найдено, я хотел бы повторить это. – NewBashUser226