小编Nis*_*ant的帖子

管道和无限流如何工作?

我通常command1 | command2 | command3在 Linux 中使用很多,但大多数都在处理确定的内容。

当我用一个无限流尝试这个,cat | sed '' | sed ''它希望模拟一个无限流时,它没有工作,直到我用Ctrl-D. 我可以通过使用解决问题,cat | sed -e '' -e ''但我想知道为什么第一个不起作用。cat | cat | cat工作得很好。这与 有什么关系sed,如果有,那是什么问题?

我试着思考这个问题,我发现唯一不同的是,当我使用时,cat我按下了Enter键,它做了一些sed ''上面第一个没有发生的特殊事情?

谁能告诉我如何使管道与无限蒸汽无缝工作?

linux pipe streams

4
推荐指数
1
解决办法
1772
查看次数

循环输入并在 bash 中执行命令的通用函数?

我试图创建一个循环输入并执行命令的函数 - 无论它们如何分隔。

function loop {
    # Args
    #     1: Command
    #     2: Inputs
    for input in "$2" ; do                     
        $1 $input
    done
}
Run Code Online (Sandbox Code Playgroud)
declare -a arr=("1" "2" "3")

$ loop echo "$arr[@]"
1

$ loop echo 1 2 3
1

$ loop echo $arr
1
Run Code Online (Sandbox Code Playgroud)

然而,根据这个答案,for .. in ..适用于数组:

for item in "${arr[@]}" ; do
   echo "$item"
done
Run Code Online (Sandbox Code Playgroud)

它也适用于空格分隔的值:

for item in 1 2 3 ; do
   echo "$item"
done
Run Code Online (Sandbox Code Playgroud)

简而言之,我如何在传递参数时获得"${arr[@]}"和的效果。1 2 …

bash array function

3
推荐指数
1
解决办法
4288
查看次数

如何获取在后台运行的进程的 pid?

我正在使用这种方法在后台运行一个进程。

"$@" &>/dev/null &disown
Run Code Online (Sandbox Code Playgroud)

我如何实现以下目标 -

  1. 获取背景 pid
  2. 返回它以便它可以在另一个脚本中使用?

shell background-process

1
推荐指数
1
解决办法
1568
查看次数

如何将数组作为参数传递?

我如何将 an 传递array给一个函数,特别是如果它在某个地方的中间?双方"${b}""${b[@]}"似乎只传递的第一个项目,所以有没有办法既-呼叫并检索它,正确?

#/usr/bin/env bash

touch a b1 b2 b3 c

f()
{
    local a="${1}"
    local b="${2}"   
    local c="${3}"
    ls "${b[@]}" # expected b1 b2 b3
}

a=a
b=("b1" "b2" "b3")
c=c

f "${a}" "${b}" "${c}"
f "${a}" "${b[@]}" "${c}"

rm a b1 b2 b3 c
Run Code Online (Sandbox Code Playgroud)

bash function

0
推荐指数
1
解决办法
269
查看次数

标签 统计

bash ×2

function ×2

array ×1

background-process ×1

linux ×1

pipe ×1

shell ×1

streams ×1