Questions tagged «bash»

有关为Bash命令外壳编写的脚本的问题。对于具有错误/语法错误的shell脚本,请在此处发布之前,使用shellcheck程序(或在Web shellcheck服务器中的https://shellcheck.net)进行检查。有关Bash交互使用的问题更可能是Super User而不是Stack Overflow上的话题。

7
如何从终端发送电子邮件?
我知道有一些方法可以在Linux / MacOS中从终端发送电子邮件,但是我似乎找不到有关如何执行此操作的适当文档。 基本上,我的bash脚本需要它,它在每次文件更改时通知我。
169 bash  email  terminal 

8
如何在bash中单行运行多个后台命令?
我通常使用以下命令运行多个命令: sleep 2 && sleep 3 要么 sleep 2 ; sleep 3 但是,如果我想从一个命令行命令在后台同时运行它们呢? sleep 2 & && sleep 3 & 不起作用。而且也没有更换&&用; 有办法吗?
169 linux  bash  shell 

9
如何在bash脚本中检查文件名的扩展名?
我正在用bash编写每晚构建脚本。 除了一点小障碍,一切都很好,花花公子: #!/bin/bash for file in "$PATH_TO_SOMEWHERE"; do if [ -d $file ] then # do something directory-ish else if [ "$file" == "*.txt" ] # this is the snag then # do something txt-ish fi fi done; 我的问题是确定文件扩展名,然后采取相应措施。我知道问题出在if语句中,正在测试txt文件。 如何确定文件是否带有.txt后缀?
169 bash  scripting  file 

4
用xargs调用shell函数
我正在尝试使用xargs并行调用一个更复杂的函数。 #!/bin/bash echo_var(){ echo $1 return 0 } seq -f "n%04g" 1 100 |xargs -n 1 -P 10 -i echo_var {} exit 0 这将返回错误 xargs: echo_var: No such file or directory 任何有关如何使用xargs来完成此操作的想法,或者任何其他解决方案都将受到欢迎。
168 bash  sh  xargs 

9
如何在Linux中遍历目录?
我在Linux上用bash编写脚本,需要遍历给定目录中的所有子目录名称。如何遍历这些目录(并跳过常规文件)? 例如: 给定目录是/tmp/ 它具有以下子目录:/tmp/A, /tmp/B, /tmp/C 我想检索A,B,C。
168 linux  bash 

4
如何在bash中使用mod运算符?
我正在尝试这样的一行: for i in {1..600}; do wget http://example.com/search/link $i % 5; done; 我想要获得的输出是: wget http://example.com/search/link0 wget http://example.com/search/link1 wget http://example.com/search/link2 wget http://example.com/search/link3 wget http://example.com/search/link4 wget http://example.com/search/link0 但是我实际上得到的只是: wget http://example.com/search/link

4
Bash中“ if”语句的“ and”运算符
我正在尝试创建一个简单的Bash脚本来检查网站是否关闭,并且由于某种原因“ and”运算符不起作用: #!/usr/bin/env bash WEBSITE=domain.com SUBJECT="$WEBSITE DOWN!" EMAILID="an@email.com" STATUS=$(curl -sI $WEBSITE | awk '/HTTP\/1.1/ { print $2 }') STRING=$(curl -s $WEBSITE | grep -o "string_to_search") VALUE="string_to_search" if [ $STATUS -ne 200 ] && [[ "$STRING" != "$VALUE" ]]; then echo "Website: $WEBSITE is down, status code: '$STATUS' - $(date)" | …
168 bash  if-statement 

9
Shell脚本的设计模式或最佳实践
从目前的情况来看,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 是否有人知道任何有关壳脚本(sh,bash等)的最佳实践或设计模式的资源?

6
如何在Bash中将字符串与正则表达式匹配?
我想写一个包含函数,以便给出当bash脚本.tar,.tar.bz2,.tar.gz等文件,它使用的焦油与相关的开关来解压缩文件。 我正在使用if elif then语句来测试文件名,以查看其结尾,而我无法使用正则表达式元字符将其匹配。 为了避免经常在命令行中使用“ test”来重写脚本,我认为下面的语句应该起作用,我尝试了括号,引号和元字符的所有组合,但仍然失败。 test sed-4.2.2.tar.bz2 = tar\.bz2$; echo $? (this returns 1, false) 我敢肯定,问题很简单,我到处都看过,但是我无法理解该怎么做。有人知道我该怎么做吗?
166 regex  string  bash 

10
Bash中的eval命令及其典型用法
在阅读了bash手册页和关于此帖子之后。 我仍然很难理解该eval命令的确切功能以及这将是其典型用法。例如,如果我们这样做: bash$ set -- one two three # sets $1 $2 $3 bash$ echo $1 one bash$ n=1 bash$ echo ${$n} ## First attempt to echo $1 using brackets fails bash: ${$n}: bad substitution bash$ echo $($n) ## Second attempt to echo $1 using parentheses fails bash: 1: command …
165 linux  bash  shell  scripting  eval 

8
bash:获得输出的第n列的最短方法
假设在您的工作日中,您反复遇到bash中某个命令的以下形式的列化输出形式(对于我而言,是svn st在我的Rails工作目录中执行): ? changes.patch M app/models/superman.rb A app/models/superwoman.rb 为了处理命令的输出(在本例中为文件名),需要进行某种形式的解析,以便将第二列用作下一条命令的输入。 我一直在做的事情是使用awk第二列,例如,当我想删除所有文件(不是那是典型的用例:)时,我会这样做: svn st | awk '{print $2}' | xargs rm 由于我输入了很多内容,一个自然的问题是:在bash中完成此操作的方法是否更短(因此更酷)? 注意:尽管我的具体示例在我的svn工作流程中,但我要问的实际上是一个shell命令问题。如果您认为工作流程很愚蠢,并且建议使用其他方法,那么我可能不会拒绝您,但是其他人可能会拒绝,因为这里的问题实际上是如何以最短的方式以bash格式输出第n列命令。谢谢 :)
165 bash  awk 


5
如何通过双击使该file.sh可执行?
首先,我使用Mac。 接下来,我需要执行此“ file.sh”,我们将其称为。每当我需要执行它时,我都必须打开Terminal并输入: cd /Users/Jacob/Documents/folderWithFileInIt bash file.sh 没关系,但是我觉得如果我双击使文件执行起来会快很多,你不觉得吗? 所以我的问题是,如何通过双击使该文件可执行? 我的想法是: a)在终端中输入类似chmod之类的内容并更改权限? b)创建一个文件,将我上面写的代码放在其中^,然后使该文件可执行? c)以某种方式实现自动化? 哪种方法最好,还是有更好的方法?另外,请您尽可能多地解释一下,我是Terminal的新手。谢谢。

4
Bash如果具有多个条件的语句抛出错误
我正在尝试编写一个脚本,该脚本将检查两个错误标志,并且如果一个(或两个)标志被更改,它将回显-发生错误。我的剧本: my_error_flag=0 my_error_flag_o=0 do something..... if [[ "$my_error_flag"=="1" || "$my_error_flag_o"=="2" ] || [ "$my_error_flag"="1" && "$my_error_flag_o"="2" ]]; then echo "$my_error_flag" else echo "no flag" fi 基本上应该是这样: if ((a=1 or b=2) or (a=1 and b=2)) then display error else no error fi 我得到的错误是: line 26: conditional binary operator expected line 26: …
165 bash  if-statement  flags 


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.