我从个人手册.txt
文件中复制了一个代码块。我将其粘贴到终端中并通过按 Enter(回车)执行。最近,出于美观原因,我在那里缩进了它,但是当我复制它时,它缩进了执行中断(打开了辅助提示符)。为了处理这种现象我想到了使用先进先出(FIFO)。
我尝试创建一个 FIFO,并向其传递以下代码块:
⇨⇨⇨⇨(
⇨⇨⇨⇨Indented commands...
⇨⇨⇨⇨)
FIFO 应从此原始代码块中删除所有前导空格(通常是制表符,但也可能是空格),并返回其未缩进的版本:
(
commands...
)
据我了解,我应该放入 FIFO 文件中的代码是's/^\s*//g'
.
我的问题:
当我将代码块粘贴到 Bash 终端时,在执行之前如何使其受到我创建的 FIFO 文件的影响?
更新:
这是我测试的完整语法。它未能正确执行(没有错误,只是打开了辅助提示),因此我考虑使用 FIFO 过滤器:
⇨⇨⇨⇨(
⇨⇨⇨⇨command1...
⇨⇨⇨⇨cat <<-'PMA' > /opt/script.sh
⇨⇨⇨⇨⇨⇨⇨⇨#!/bin/bash
⇨⇨⇨⇨⇨⇨⇨⇨strings...
⇨⇨⇨⇨PMA
⇨⇨⇨⇨command2...
⇨⇨⇨⇨) | sed 's/^\s*//g'
答案1
我不相信你可以(相当容易地)简单地创建一个 FIFO(又名“命名管道”)来改变通过它的数据。当数据从管道的远端出来时,过滤数据可能会更简单,就像[...] | sed 's/^\s*//'
(该g
标志是多余的,因为“行的开头”每行只能出现一次)。