如何使用换行符作为输出记录分隔符从对话框重定向stderr?

时间:2013-02-21 14:08:14

标签: bash dialog stdout separator

每次运行命令时,我都希望stderr重定向到 / tmp / test 。测试文件应该有由换行符分隔的记录,而不是指向同一行。

如果我对选项domain-name-servers的输入是192.168.0.1和选项路由器192.168.0.2,那么这两个输出将出现在同一行。它们应该分开来。

我正在使用这些IP地址:

  1. 192.168.0.1
  2. 192.168.0.2
  3. 使用此命令行:

    $ dialog --title "Inputbox - Example" \
    --inputbox "option domain-name-servers" 8 50 "option domain-name-servers " \
    --inputbox "option routers" 8 50 "option routers " \
    2> /tmp/test
    

2 个答案:

答案 0 :(得分:0)

使用--separate-widget标志

您可以使用 - separate-widget 标志强制小部件由换行符而不是默认制表符分隔。例如:

dialog --separate-widget $'\n' \
       --title "Inputbox - Example" \
       --inputbox "option domain-name-servers" 8 50 "option domain-name-servers " \
       --inputbox "option routers" 8 50 "option routers " \
       2> /tmp/test

答案 1 :(得分:0)

这是最终的代码。 dhcpd.conf 现在将具有正确的输出,并为输入框中的每个输入添加换行符。

#!/bin/bash

dialog --title "DHCP-CONFIGURATION" \
dialog --separate-widget $'\n' \
--inputbox "option domain-name-servers" 8 50 "option domain-name-servers "
--inputbox "option routers" 8 50 \ "option routers " 
--inputbox "ddns-update-style" 8 50 \ "ddns-update-style"
--inputbox "subnet and netmask" 8 50 \ "subnet and netmask "
--inputbox "range" 8 50 \ "range "
--inputbox "default-lease-time" 8 50 \ "default-lease-time "
--inputbox "max-lease-time" 8 50 \ "max-lease-time "
--inputbox "}" 8 50 \ "} "
2> /tmp/dhcpd.conf