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, у вас есть обычные привилегии.
Эти изменения принесут пользу вашему коду.:
#!/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}
Просто используйте 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 символу, который не является пробелом, таким образом пропуская пустые строки
Вы можете попробовать:
while IFS='|=' read A B C ; do
echo "$A"
echo "$B"
echo "$C"
done < abc.txt