Linux 如何将命令输出存储在变量中,而不是仅存储在一行上?
命令输出存储在变量中。目前,我的脚本在一行上输出所有内容,而不是在多行上分开。这不是我想要的,因为这样它看起来杂乱无章,很难阅读。如何将命令输出存储在变量中,以便将其打印到多行而不是一行Linux 如何将命令输出存储在变量中,而不是仅存储在一行上?,linux,bash,shell,Linux,Bash,Shell,命令输出存储在变量中。目前,我的脚本在一行上输出所有内容,而不是在多行上分开。这不是我想要的,因为这样它看起来杂乱无章,很难阅读。如何将命令输出存储在变量中,以便将其打印到多行而不是一行 #! /bin/bash #User input echo -n 'Enter IP: ' read IP #Scanning the Ports ports=$( nmap -sS $IP | grep open) #Output echo $ports 例如: 它当前输出的内容 21/tcp ope
#! /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
你需要使用引号
echo "$ports"
当bash看到没有引号的行时,它将执行单词拆分。换句话说,就好像你执行了:
echo 21/tcp open ftp\
22/tcp open ssh\
23/tcp open telnet
它对换行符的处理与对空格的处理没有区别,并将每个参数传递给echo。然后写入每个参数,用一个空格分隔。您需要使用引号
echo "$ports"
当bash看到没有引号的行时,它将执行单词拆分。换句话说,就好像你执行了:
echo 21/tcp open ftp\
22/tcp open ssh\
23/tcp open telnet
它对换行符的处理与对空格的处理没有区别,并将每个参数传递给echo。然后,它写入每个参数,并用一个空格分隔