Извлечение строки из ключа, значения из текстового файла и присвоение ей новой переменной

Windows и Linux не обладают одинаковыми правами администратора.

В Windows задачи системного администрирования могут выполняться только процессами, запущенными с высоким уровнем привилегий. Нормальные процессы выполняются с обычным уровнем привилегий. Пользователь может запускать процесс с высоким уровнем привилегий, если его учетная запись отмечена как администратор; обычно для этого им необходимо повторно ввести свой пароль (« UAC приглашение»). Таким образом, администратор - это пользователь, учетная запись которого имеет право на повышенные привилегии.

В Linux (и других системах Unix) задачи системного администрирования могут выполняться только пользователем root . Это учетная запись пользователя, которая предназначена для системных задач, а не для входа человека в систему. Пользователь root определяется своим идентификатором пользователя, равным 0 (учетная запись обычно называется root , но это пользователь ID, который делает его особенным, а не имя). Администратор - это пользователь, имеющий право доступа к учетной записи root.

В Linux есть два основных способа получить доступ к учетной записи root. Системный администратор может включить один, или оба, или их (или, реже, другие методы, включающие либо те же инструменты, настроенные по-разному, либо другие инструменты).

  • Команда su позволяет любому пользователю получить доступ к учетной записи root, если они знают пароль для учетной записи root. В некоторых конфигурациях только определенные пользователи, которые являются членами группы, традиционно называемой wheel , могут использовать su для выполнения команд от имени пользователя root.
  • Команда sudo позволяет пользователю запускать команды от имени пользователя root, если они объявлены в файле конфигурации sudo ( sudoers ), либо напрямую, либо через членство в группе. Обычно sudo требует, чтобы пользователь ввел свой собственный пароль; в основном это делается для того, чтобы избежать использования sudo прохожим, если пользователь оставил свой терминал без присмотра.

Итак, если у вас есть учетная запись администратора в Linux, это означает, что вам разрешено запускать sudo или su для выполнения команд от имени пользователя root. Когда вы запускаете команды не от имени пользователя root, у вас есть обычные привилегии.

0
17.10.2018, 05:38
3 ответа

Эти изменения принесут пользу вашему коду.:

#!/bin/bash

cat abc.txt | while IFS= read -r line ; do

A=$(echo $line | sed -e 's/=/ /g;s/|/ /g' |  awk '{print $1}')
B=$(echo $line | sed -e 's/=/ /g;s/|/ /g' |  awk '{print $2}')
C=$(echo $line | sed -e 's/=/ /g;s/|/ /g' |  awk '{print $3}')

    echo $A
    echo $B
    echo $C
  done

foo_key1
foo.com
/tmp/worker${Build_Number}
foo_key2
goo.com
/tmp/manager${Build_Number}
0
28.01.2020, 02:31

Просто используйте awk для разделения на =или |и распечатайте 3 столбца,затем используйте readдля назначения столбцов переменным

awk -F '[=|]' '{print $1, $2, $3}' abc.txt | while read A B C; do
    echo $A
    echo $B
    echo $C
done

Также вы можете добавить регулярное выражение перед фигурными скобками для фильтрации данных, например '/\S+/ {print $1, $2, $3}'здесь используется регулярное выражение, которое будет соответствовать более чем 1 символу, который не является пробелом, таким образом пропуская пустые строки

1
28.01.2020, 02:31

Вы можете попробовать:

while IFS='|=' read A B C ; do
  echo "$A"
  echo "$B"
  echo "$C"
done < abc.txt
1
28.01.2020, 02:31

Теги

Похожие вопросы