小编gle*_*man的帖子

不能在bash中使用while和pipe中的变量

我有这样的代码

var="before"  
echo "$someString" | sed '$someRegex' | while read line 
do
    if [ $condition ]; then
        var="after"
        echo "$var" #first echo
    fi 
done 
echo "$var" #second echo
Run Code Online (Sandbox Code Playgroud)

这里首先回显"后",但第二次是"之前".如何在"之后"进行第二次回声打印.我认为这是因为买管我不知道怎么弄清楚.

谢谢你的解决方案......

回答编辑:

我纠正了它,它工作正常.感谢eugene的有用答案

var="before"  
while read line 
do
    if [ $condition ]; then
        var="after"
        echo "$var" #first echo
    fi 
done < <(echo "$someString" | sed '$someRegex')
echo "$var" #second echo
Run Code Online (Sandbox Code Playgroud)

linux bash pipe environment-variables

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

收紧炮弹对抗forkbomb

我有一台服务器,我必须允许远程SSH用户出于某种目的.我想,以加强反对任何形式的壳叉炸弹就可以了.我怎样才能做到这一点 ?我期待一种基于限制特定用户的CPU使用率的解决方案.

linux security shell

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

Linux 脚本选择菜单

我需要使用 select 循环和 case 指令创建一个包含六个选项的选择菜单,但不是菜单选项的 ECHO 命令,它们必须显示如下:

1) opt1
2) opt2
3) opt3
4) opt4
5) opt5
6) opt6
Run Code Online (Sandbox Code Playgroud)

并且不喜欢:

1) opt1 3) opt3 5) opt5
2) opt2 4) opt4 6) opt6
Run Code Online (Sandbox Code Playgroud)

到目前为止,我有这段代码,但问题出在显示上,有 5 个选项时,它垂直显示,但有 6 个选项时,它并排显示:

#! /bin/sh
PS3="Enter your choice :"
select choice in "opt1" "opt2" "opt3" "opt4" "opt5" "Exit"; do
case $REPLY in
    1) echo "$choice";;
    2) echo "$choice";;
    3) echo "$choice";;
    4) echo "$choice";;
    5) echo "$choice";;
    6) echo "see you next time";break;;
    *) echo "Wrong …
Run Code Online (Sandbox Code Playgroud)

shell select

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

如何用TCL中的单个逗号替换多个空格

请告诉我用逗号替换多个空格的方法,例如输入字符串

set string "boy      cat dog            girl     man"
Run Code Online (Sandbox Code Playgroud)

字符串之间可以有多个空格例子8男孩和猫之间,4个狗和女孩之间

我想要它 boy,cat,dog,girl,man

tcl

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

鱼壳中意外缺乏可变膨胀

这是 2.1.0 版

$ set a foo
$ set b bar
$ echo $a_$b

$ echo {$a}_$b
foo_bar
Run Code Online (Sandbox Code Playgroud)

为什么第一个“回声”什么都不输出?我本来希望看到“酒吧”

fish

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

test命令:-n和-z之间的区别

鉴于此驱动程序功能仅在给定输入的情况下产生输出:

function driver -a arg
  test $arg = 1; and echo OK
  return 0
end
Run Code Online (Sandbox Code Playgroud)

当函数发出输出时,事情正常工作:

$ driver 1 | od -c
0000000   O   K  \n
0000003
$ test -z (driver 1); and echo no output; or echo some output
some output
$ test -n (driver 1); and echo some output; or echo no output
some output
Run Code Online (Sandbox Code Playgroud)

但在无输出的情况下:

$ driver 0 | od -c
0000000
$ test -z (driver 0); and echo no output; or echo some output
no output …
Run Code Online (Sandbox Code Playgroud)

fish

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

寻找时间戳的差距

我在一个可能持续 24 小时或更长时间的文件中有以下时间戳:

2014-11-11-04.01.05.000000
2014-11-11-04.03.33.000000
2014-11-11-04.06.02.000000
2014-11-11-04.08.31.000000 
Run Code Online (Sandbox Code Playgroud)

每个时间戳之间的间隔应小于 5 分钟。如何将一个简单的 bash shell 脚本放在一起来解析文件并告诉我是否有超过 5 分钟的间隔?我看到的最简单的方法是用上一行减去下一行。但我不太擅长 bash shell 脚本。任何人都可以帮忙吗?

linux bash shell

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

haskell System.Process.createProcess重定向stdout和stderr

如何使用createProcessin 将std_in和std_err重定向到文件System.Process?

unix io haskell

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

如何在bash中删除pom文件中的版本号

我有一个pom文件,其中包含以下信息:

<modelVersion>4.0.0</modelVersion>
  <groupId>com.site.camera</groupId>
  <artifactId>proj3</artifactId>
  <packaging>pom</packaging>
  <version>2.6</version>
  <name>Proj 3</name>
Run Code Online (Sandbox Code Playgroud)

我正在编写一个bash脚本,并希望能够打开这个文件(pom.xml)并删除版本(例如在这种情况下为2.6).我这样做是因为当我更新版本时,我希望我的脚本的其余部分用它来更新.

我尝试过的事情:

var=$(grep <version>2.6</version> pom.xml)
echo $var
Run Code Online (Sandbox Code Playgroud)

请注意,我在pom文件中有多个版本参数.我需要这个特定的版本,包含这个名称,包装,artifactId等.

xml bash grep sed maven

3
推荐指数
2
解决办法
4897
查看次数

为什么bash函数使用圆括号,如果它们从不填充参数?

各种语言的函数定义语法是:

C(所有脚本语言的教父):

func_type myfunc_c (arg_type arg_name , ...)
{
    /* arguments explicitly specified */
}
Run Code Online (Sandbox Code Playgroud)

TCL:

proc myfunc_tcl {arg1 arg2 args} {
    # arguments explicitly specified
}
Run Code Online (Sandbox Code Playgroud)

Perl的:

sub myfunc_perl {
    # no arguments explicitly specified && no round brackets used
}
Run Code Online (Sandbox Code Playgroud)

蟒蛇:

def myfunc_python(arg1, arg2):
    # arguments explicitly specified
Run Code Online (Sandbox Code Playgroud)

击:

function myfunc_bash () {
    # arguments NEVER explicitly specified
    # WHY using round brackets?
}
Run Code Online (Sandbox Code Playgroud)

为什么在bash中使用圆括号?

bash

3
推荐指数
2
解决办法
463
查看次数

标签 统计

bash ×4

linux ×3

shell ×3

fish ×2

environment-variables ×1

grep ×1

haskell ×1

io ×1

maven ×1

pipe ×1

security ×1

sed ×1

select ×1

tcl ×1

unix ×1

xml ×1