BASH для цикла, чтобы проверить список для имени пользователя - PullRequest
2 голосов
/ 23 февраля 2012

Для этой конкретной проблемы мне нужно написать скрипт, который проверяет существование списка, проверяет список, чтобы увидеть, существует ли имя пользователя, данное в командной строке, и если нет, он добавляет его в список.Я видел похожие вопросы, подобные этому, но не нашел ни одного, который бы конкретно использовал цикл for.Я только начал изучать BASH на днях, поэтому любая помощь или толчок в правильном направлении будут очень полезны.Вот что у меня пока (с синтаксическими ошибками)

#! /bin/bash
user=$1

if  [ list.txt -f ]; then  
    echo "The list does not exist"

    for v in $(cat list.txt)
    do
    if [ $v -eq $user ]; then 
            echo "That username already exists!"

    elif
    echo $user >> list.txt ; then

   else  echo "That file does not exist"
fi

Ответы [ 2 ]

1 голос
/ 23 февраля 2012

Вот еще один подход к вашему коду:

#!/bin/bash
user=$1

if  [ ! -f "list.txt" ]; then
  echo "The list does not exist."
else
  for v in $(cat list.txt)
  do
    # user found
    if [ "$v" = "$user" ]; then
      echo "That username already exists!"
      exit $?
    fi
  done
fi

# user not found
echo $user >> "list.txt"

Примечания по Bash:

  • При сравнении строк в bash вам нужно использовать оператор = ( см. Этот список ).
  • Неплохая идея использовать кавычки (" ") для имен файлов (в случае, если имена файлов имеют пробелы и т. Д.)
  • elif необходимо иметь условие, если вы собираетесь его использовать ( см. Эту страницу и искать elif).

Надеюсь, это немного поможет; знание Bash может быть очень полезным!

0 голосов
/ 23 февраля 2012

Петли для людей, которым нечего делать.

if [ -f list.txt ] && grep -q -x -F "$user" list.txt
then
  echo "Username exists"
else
  echo "$user" >> list.txt
fi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...