AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-107777

Allan's questions

Martin Hope
Allan
Asked: 2023-06-16 02:46:46 +0800 CST

Bash:将带有空格和引号的字符串转换为数组

  • 6

我有一个函数(不是我创建的),它在引号内输出一系列字符串:

command <args>

“Foo”
“FooBar”
“Foo Bar”
“FooBar/Foo Bar”

当我尝试将它分配给一个数组(Bash;BSD/Mac)时,我得到的是 7 个元素,而不是 4 个元素。例如,因为我${array[2]}应该得到,“Foo Bar”但我得到的下”Foo一个元素是Bar”。任何没有空格的元素都可以正常工作(即${array[0]}=“Foo”)

如何将引号之间的每个元素(包括空格)分配给元素本身由空格(?)分隔的数组?

现在,我正在考虑使用 sed/awk 来“去掉”引号,但我认为应该有更好、更有效的方法。

目前,我将命令的输出(看起来与上面的输出完全相同,包括引号)分配给临时变量,然后将其分配给数组。

_tempvar=“$(command <args>)”

declare -a _array=(${_tempvar})
bash
  • 3 个回答
  • 72 Views
Martin Hope
Allan
Asked: 2020-01-14 03:03:38 +0800 CST

使用awk提取不同字符之间的字符串

  • 5

我正在尝试编写一个获取 VirtualBox VM 的 UUID 的 bash 函数。我很新,awk所以我试图专注于学习如何使用它来解决问题。我知道我可以使用sed甚至cut解决这个问题。

我的“原始”输出VBoxManage list vms如下:

$ VBoxManage list vms
"FreeBSD" {1aac7062-bd59-47ee-9261-2f6aa8d9ef53}
"Windows 10" {64942de7-beb9-418c-9f52-5befcb6f577b}
"High Sierra" {07f73e1a-a0c4-4190-ade1-79a2e432b4d6}
"Test Machine" {9d0953a7-ca2a-4667-8c5b-1a9f550b2956}

我想要的输出是获取特定 VM 的 UUID。在这种情况下使用“测试机”,我正在寻找9d0953a7-ca2a-4667-8c5b-1a9f550b2956(不带括号{和})。

经过相当多的搜索和测试,我想出了

$ VBoxManage list vms | awk '/Test Machine/{ sub("{" ,""); sub("}", "");  print $3 }'

9d0953a7-ca2a-4667-8c5b-1a9f550b2956 

它有效,但我必须使用sub命令来提取它。


我的问题是,有没有办法用类型运算符简化操作的替换部分,or这样我就不必使用两个sub命令?

例如,如果我尝试awk '/Test Machine/{ sub("{" || "}", ""); print $3'它不起作用 - 它会打印整个字段,包括括号。

 {9d0953a7-ca2a-4667-8c5b-1a9f550b2956}

有没有更好的方法来提取该字符串?

bash awk
  • 6 个回答
  • 7542 Views
Martin Hope
Allan
Asked: 2018-03-06 06:43:21 +0800 CST

在 sh 和 bash 中检查 root 用户 [重复]

  • 2
这个问题在这里已经有了答案:
如果脚本不是root,如何停止运行(并回显“Not running as root!Exiting...”) 4 个答案
4年前关闭。

我正在尝试编写一个脚本,在新的 FreeBSD 安装上自动安装端口/包。为此,执行脚本的用户必须是 root。

该系统被“假定”为处女的意思bash,sudo可能安装也可能不安装;所以我试图解释它。为此,我正在检查用户 ID 是否等于 0。

问题是,在 bash 和 sh 之间,环境变量是不同的:

  • bash -> $EUID(全部大写)
  • sh -> $euid(全部更低)

除了环境变量之外,还有其他方法可以检查 root 用户,还是我应该根据环境调整对用户的检查?

bash freebsd
  • 2 个回答
  • 3625 Views
Martin Hope
Allan
Asked: 2017-12-31 06:19:07 +0800 CST

xfce4-terminal 几何被缩放得非常小

  • 1

我对 xfce4-terminal 有一个非常有趣的问题,我不知道如何解决。

几何设置的比例非常小。我的意思是我有一个 80 列乘 40 列的几何图形,我得到一个有效为 27x3 的窗口(见下文),我认为这是它将打开的最小值。如果我指定 120x80,则大致相同。

在此处输入图像描述

但是,如果我将首选项中的设置更改为像 5000x750 这样令人发指的设置,我会得到一个正常大小的窗口,不需要调整大小即可使用。无论我在首选项中设置它还是使用 CLI 从 CLI 启动它都会发生这种情况--geometry旗帜:

/usr/local/bin/xfce4-terminal --geometry 5000x750

我正在使用 Monospaced 12pt 常规字体,但我尝试更改为其他字体以查看它是否有任何效果,但没有任何效果。

我在 Xterm 中没有这个问题 - 当我启动它时,我得到一个 80x40 的窗口。我发布的任何其他应用程序也没有这个问题;只是 xfce4 终端。

如果有人知道我该如何解决这个问题,我将不胜感激。

FreeBSD 11.1、Xfce 4.12。

xfce freebsd
  • 1 个回答
  • 385 Views
Martin Hope
Allan
Asked: 2017-12-29 17:50:21 +0800 CST

FreeBSD w/ 两个网络接口和不同的域

  • 0

我有一台带有两个 NIC 的 FreeBSD 机器,设置如下:

  • em0 ---> IP set via DHCP (192.168.1.0/24). "home" domain
  • em1 ---> IP set statically (10.0.0.2). "lab" domain

出于所有意图和目的,我的主域运行良好。我可以上网并 ping 网络上的任何主机。路由也有效,我可以通过 IP 从 FreeBSD 机器上的任何一个域 ping 任何主机,但是我只能解析家庭网络上的名称。

我创建了一个/etc/resolvconf.conf文件以将搜索域和名称服务器添加到resolv.conf文件中,如下所示:

search_domains="lab"
name_servers="10.0.0.10" 

然后我使用以下命令更新 resolv.conf:

$ sudo resolvconf -u

我现在可以在lab网络上解析名称,但不再在home网络上。手动编辑 resolv.conf 文件并颠倒域和名称服务器的顺序会导致解析home但不是lab- 完全相反。

我如何知道resolv.conf将一个 DNS 服务器用于特定域(静态设置的 IP)并允许它通过 DHCP 获取另一个 IP 的 DNS 信息?


仅供参考......

/etc/rc.conf:

hostname="beastie1"
ifconfig_em0="DHCP"
ifconfig_em1="inet 10.0.0.2 netmask 255.255.255.0"
defaultrouter="192.168.1.1"

/etc/resolv.conf

# Generated by resolvconf
search lab home.
nameserver 10.0.0.10
nameserver 192.168.1.1

域 10.0.0.0上的 DNS“服务器”lab只不过是提供 DHCP 租约的廉价消费者 Netgear 路由器。我只有静态设置,因为它是用于引导映像的 TFTP 服务器,我特意将其设置为 10.0.0.2,以便在尝试在某些 Cisco 设备上刷新固件更新时使用。

networking freebsd
  • 1 个回答
  • 1425 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve