bashr c и переменные экспорта - PullRequest
1 голос
/ 19 июня 2020

Я добавляю переменную, которую хочу экспортировать каждый раз, когда запускаю окно терминала. Проблема в том, что он указывает на файл или каталог, который в настоящее время не создан. Но я хочу, чтобы bash в любом случае загружал и экспортировал переменную, потому что, когда я использую его, файл / папка будут там.

переменные

export ports=$(awk -F "/" 'BEGIN {ORS=","} /\/tcp/ {print $1}' nmap/initial.nmap | sed 's/,$//')
export portsf=$(awk -F "/" 'BEGIN {ORS=","} /\/tcp/ {print $1}' nmap/full.nmap | sed 's/,$//')

сообщения об ошибках:

awk: cmd. line:1: fatal: cannot open file `nmap/initial.nmap' for reading (No such file or directory)
awk: cmd. line:1: fatal: cannot open file `nmap/full.nmap' for reading (No such file or directory)

Есть ли способ выполнить эту работу через bashr c или я собираюсь создать псевдоним, который будет экспортировать переменную, которую я хочу, в каждом сеансе терминала?

спасибо за ваше время .

Ответы [ 2 ]

1 голос
/ 19 июня 2020

Просто добавьте следующую функцию в свой .bashrc.

set_ports () {
    awk 'F "/" 'BEGIN {ORS=","} /\/tcp/ {print $1}' "$1" | sed 's/,$//'
}

После того, как необходимые файлы станут доступны, вы можете запустить

ports=$(set_ports nmap/initial.nmap)
portsf=$(set_ports nmap/full.nmap)
export ports ports

Вы можете пропустить последнюю строку, если вы на самом деле не нужно экспортировать переменные (что, как я подозреваю, имеет место).

0 голосов
/ 19 июня 2020

Вы также можете проверить наличие файлов в вашем .bashr c и выполнить команду экспорта, только если они существуют. Примерно так должно работать:

[ -f nmap/initial.nmap ] && export ports=$(awk -F "/" 'BEGIN {ORS=","} /\/tcp/ {print $1}' nmap/initial.nmap | sed 's/,$//')
[ -f nmap/full.nmap ] && export portsf=$(awk -F "/" 'BEGIN {ORS=","} /\/tcp/ {print $1}' nmap/full.nmap | sed 's/,$//')

то, что находится после '&&', будет оцениваться только в том случае, если то, что было до '&&', выходит с кодом выхода 0. Конкретно здесь для первой строки, например, если файл 'nmap / initial.nmap' существует, вы действительно экспортируете переменную 'ports', а не иначе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...