назначить вывод команды awk массиву linux

В CentOS 7.4 были внесены изменения в программу sudo. Вопрос действительно в том, что пользователь хочет получить имя пользователя ОС в коде Python. Кажется, что все методы зависят от переменных среды, поэтому они могут работать не во всех сценариях.

Вы можете попробовать эти варианты, чтобы они работали хотя бы на CentOS 7.3 и 7.4

import commands
username = commands.getoutput("logname")
print username

import os
os.getlogin()

Примечание.:Я бы добавил это как комментарий, но я только начал отвечать на вопросы, и у меня недостаточно репутации, чтобы добавить это как комментарий.

0
03.01.2020, 10:15
2 ответа

Со страницы руководства bash:

Arrays are assigned to using compound assignments of the form name=(value1... valuen)

Таким образом, вы бы назначили это так:

myarray=( $(awk -F"|" 'NR==1{for(i=1;i<=NF;i++){if ($i ~ /SAL|COST/){print i;}}}' demo.txt) )

Тогда следующее:

echo ${myarray[@]}
echo "first: ${myarray[0]}"
echo "second: ${myarray[1]}"

Должен выдавать этот вывод:

2 3
first: 2
second: 3
0
28.01.2020, 02:58

Полностью поддерживая то, что Кусалананда сказал в своем комментарии, позвольте мне добавить, что ваша очевидная проблема может быть решена небольшим изменением ваших команд:

$ IFS=$'\n'
$ echo "${array[*]}"
2
3
0
28.01.2020, 02:58

Теги

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