Tag: bash

检查传递给Bash脚本的参数的数量

我想我的Bash脚本打印一个错误消息,如果所需的参数不符合。 我试了下面的代码: #!/bin/bash echo Script name: $0 echo $# arguments if [$# -ne 1]; then echo "illegal number of parameters" fi 由于一些未知的原因,我有以下错误: test: line 4: [2: command not found 我究竟做错了什么?

从Grep RegEx捕获组

sh (Mac OSX 10.6)中有这个小脚本来查看文件数组。 Google在这一点上停止了帮助: files="*.jpg" for f in $files do echo $f | grep -oEi '[0-9]+_([az]+)_[0-9a-z]*' name=$? echo $name done 到目前为止(显然,对于你的shell的大师) $name只能保存0,1或2,这取决于如果grep发现文件名符合提供的问题。 我想要捕捉什么是parens ([az]+) ,并将其存储到一个variables 。 如果可能,我只想使用grep 。 如果没有,请不要Python或Perl等sed或类似的东西 – 我是新的壳,并希望从* nix纯化angular攻击这个。 另外,作为一个超酷的bonu s,我很好奇我如何在shell中连接string? 我捕获的是在$ name存储的string“somename”,我想添加string“.jpg”到它的末尾,我可以cat $name '.jpg' ? 请解释发生了什么,如果你有时间的话。

在bash中,我如何将一个function键绑定到一个命令?

例如:我想把F12键绑定到命令echo "foobar"这样每次我点击F12时 ,“foobar”就会被打印到屏幕上。 理想情况下,它可以是任意的shell命令,而不仅仅是内置命令。 这个怎么办?

制作shell脚本守护程序的最佳方法是什么?

我想知道是否有一个更好的方法来创build一个守护进程,等待只使用sh的守护进程: #! /bin/sh trap processUserSig SIGUSR1 processUserSig() { echo "doing stuff" } while true; do sleep 1000 done 特别是,我想知道是否有办法摆脱循环,仍然有东西在听信号。

试图将一个string分成两个variables

我试图将一个string分成两个variables(不必使用while循环): var="hello:world" IFS=':' read var1 var2 <<< $var echo "var1: $var1" echo "var2: $var2" 但我没有得到所需的结果: var1: 'hello world' var2: '' 有人可以解释一下,如果可以这样做(或类似的方式)吗?

如何对Bash中的string中的每个字符执行for循环?

我有这样的variables: words="这是一条狗。" 我想对每个字符做一个for循环,例如,第一个character="这" ,然后是character="是" , character="一"等。 我知道的唯一方法是输出每个字符来分隔文件中的行,然后while read line使用,但这似乎效率很低。 我如何通过for循环来处理string中的每个字符?

Bash命令:(){:|:&} ;:会产生内核死亡的进程。 你能解释一下这个语法吗?

我偶然发现这个网页 ,并不明白这是如何工作的。 这个命令“以指数forms产生子过程,直到你的盒子locking”。 但为什么? 我less掉的是冒号。 user@host$ :(){ :|:& };:

Bash中的“$ @”和“$ *”有什么区别?

在我看来,他们都存储所有的命令行参数。 那么两者有什么不同?

将所有variables从一个shellcript传递给另一个?

所以可以说我有一个名为test.sh的shell脚本 有: #!/bin/bash # TESTVARIABLE=hellohelloheloo ./test2.sh 我的test2.sh看起来像这样 #!/bin/bash # echo ${TESTVARIABLE} 这不起作用。 我不想将所有variables作为parameter passing,因为这是过度的。 有不同的方法吗?

命令replace:反引号或美元符号/ paren封闭?

在bash中进行命令replace的首选方法是什么? 我一直这样做: echo "Hello, `whoami`." 但是最近我经常看到这样写: echo "Hello, $(whoami)." 什么是首选语法,为什么? 或者它们几乎可以互换? 我倾向于赞成第一个,只是因为我的文本编辑器似乎知道它是什么,并适当地进行语法高亮显示。 我在这里读到,逃跑的angular色在每种情况下都会有所不同,但是我不清楚哪种行为更可取,或者仅仅取决于情况。 侧面的问题:在一个脚本中使用这两种forms是不好的做法,例如在嵌套命令replace时?