小编Jam*_*esL的帖子

缩进时如何将字符串值分配给多行的变量?

问题:

  1. 我需要为一个变量分配一个相当长的值。
  2. 我的脚本的所有行都必须在一定数量的列下。

所以,我试图使用多条线来分配它。

没有缩进很简单:

VAR="This displays without \
any issues."
echo "${VAR}"
Run Code Online (Sandbox Code Playgroud)

结果:

This displays without any issues.
Run Code Online (Sandbox Code Playgroud)

但是有缩进:

    VAR="This displays with \
    extra spaces."
    echo "${VAR}"
Run Code Online (Sandbox Code Playgroud)

结果:

This displays with      extra spaces.
Run Code Online (Sandbox Code Playgroud)

如果没有这些空格,我如何优雅地分配它?

variable

75
推荐指数
5
解决办法
28万
查看次数

在行的开头或中间获取模式的 Grep

我首先要说的是,我认为这个问题没有听起来那么天真。

我需要做的是:检查 PATH 环境变量中的文件夹。它可能在开始时或之后的某个地方。我只需要验证该文件夹是否在那里。

我的问题示例 - 让我们使用/opt/gnome.


场景 1:文件夹不在 PATH 的开头

# echo "$PATH"
/sbin:/usr/sbin:/opt/gnome:/var/opt/gnome

# echo "$PATH" | grep ":/opt/gnome"
/sbin:/usr/sbin:/opt/gnome:/var/opt/gnome
Run Code Online (Sandbox Code Playgroud)

请注意,grep 需要足够具体,以免捕获/var/opt/gnome. 因此冒号。


场景 2:文件夹位于 PATH 的开头。

# echo "$PATH"
/opt/gnome:/sbin:/usr/sbin:/var/opt/gnome

# echo "$PATH" | grep "^/opt/gnome"
/opt/gnome:/sbin:/usr/sbin:/var/opt/gnome
Run Code Online (Sandbox Code Playgroud)

这是我的问题 - 我需要在此文件夹中搜索冒号或行首。我想做的是这两个括号表达式之一:

# echo $PATH | grep "[^:]/opt/gnome"
# echo $PATH | grep "[:^]/opt/gnome"
Run Code Online (Sandbox Code Playgroud)

BUT[^和[:有自己的含义。因此,上面的两个命令不起作用。

有没有一种方法可以在一个命令中对这两种情况进行 grep?

path shell-script text-processing

9
推荐指数
4
解决办法
5586
查看次数

标签 统计

path ×1

shell-script ×1

text-processing ×1

variable ×1