Как сохранить вывод команды в переменной, а не в одной строке? - PullRequest
0 голосов
/ 17 октября 2019

Выходные данные команды сохраняются в переменной. В настоящее время мой сценарий выводит все это в одну строку, а не разделяет его на несколько строк. Что не то, что я хочу, потому что это выглядит неорганизованным и трудно читаемым. Как я могу сохранить вывод команды в моей переменной, чтобы она выводилась на несколько строк, а не только на одну?

#! /bin/bash

#User input
echo -n 'Enter IP: '
read IP

#Scanning the Ports
ports=$( nmap -sS $IP | grep open)

#Output
echo $ports

Пример:

Что она выводит в настоящее время

21/tcp open ftp 22/tcp open ssh 23/tcp open telnet

Что бы я хотел вывести

21/tcp open ftp 
22/tcp open ssh 
23/tcp open telnet

1 Ответ

2 голосов
/ 17 октября 2019

Вам нужно использовать кавычки.

echo "$ports"

Когда bash видит строку без кавычек, он выполняет разбиение по словам. Другими словами, это как если бы вы выполнили:

echo 21/tcp open ftp\
22/tcp open ssh\
23/tcp open telnet

, который обрабатывает символы новой строки не так, как пробелы, и передает каждый аргумент в echo. Затем он записывает каждый аргумент, разделенный одним пробелом.

...