Questions tagged «shell-script»

有关shell脚本,由shell解释的可执行文件(bash,zsh等)的问题。

1
如何将多行awk脚本集成到shell脚本中
我的问题是 如何解析文件以提取保存在“组号”中的3位数字 我正在尝试将一系列命令整合到一个shell脚本中 解析欧洲标准以提取测试序列 将文本编码转换为utf8 使用上面文章中提供给我的awk例程处理结果。 将内容保存在目标文件中 我已经试写了以下脚本。我能做到只step 1和step 4,但既不step 2也没有step 3。我想知道是否应该创建中间(临时)文件。我试图将中间步骤的输出存储到变量中,但是没有成功。对于可能出现的错误以及执行此操作的最佳方法,任何帮助都将是帮助。 #!/bin/bash # creating the Latex code for a test procedure awkcommand= "/usr/bin/awk ' $1 == "Group" {printf("\\section{%s %d}\n", $1, $2); next} { title = sep = "" for (i=1; i<=NF; i++) if ($i ~ /^[0-9][0-9][0-9]$/) { printf("\\subsection{%s} \n\\TestDetails{%d}\n", …
12 shell-script  awk 

2
如何在Redhat下将Shell脚本作为守护程序运行?
我有一个shell脚本,它实际上是一个带有一些日志记录的线性脚本,我正在尝试从init脚本中运行它。我正在使用其中的daemon函数/etc/init.d/functions来运行它,因为Redhat似乎不可start-stop-daemon用。当我调用初始化脚本(/etc/init.d/script start)时,它停留在前台,而不是完成并使进程运行。我将该守护程序守护起来的正确方法是什么? 要运行的脚本: # conf file where variables are defined . /etc/script.conf echo "Starting..." | logger -i echo "Monitoring $LOG_LOCATION." | logger -i echo "Sending to $MONITOR_HOST:$MONITOR_PORT." | logger -i tail -n 1 -F $LOG_LOCATION | grep WARN --line-buffered | /usr/bin/nc -vv $MONITOR_HOST $MONITOR_PORT 2>&1 | logger -i 初始化脚本: #!/bin/bash …

2
如何开始拖尾尚未创建的文件
我tail用来监视我知道会将其进度写入磁盘的作业进度。几乎总是,我知道它们将在开始运行之前创建哪个文件(作业由超级计算机上的调度程序调度) 有没有一种方法,以tail这些文件被创建之前他们?我想这样做是在避免竞争条件和/或对作业如何或何时写入磁盘进行假设的同时。

4
如何从Shell接收类似顶部的CPU统计信息?
我正在尝试从中准确读取我使用的CPU(百分比)top。这是我正在测试的命令: top -n1 | awk '/Cpu\(s\):/ {print $2}' 返回: 10.7%us, 这是我想要的适当数据。但是,即使我在系统上施加不同的负载,每次运行命令时也会得到相同的输出(更不用说htop告诉我我的用法是不同的)。看来,每当我开始时top,我的CPU使用率都是相同的。只有经过几帧,它才能为我提供适当的值。 看来我无法以这种方式解析top的输出,因此我正在寻找其他可靠的应用程序,这些应用程序将使我能够从shell中获得准确的读数。我真的很喜欢如何htop为我提供每核的阅读。 我已经尝试过iostat,mpstat但是它们似乎给出了不准确且“变化缓慢”的值。
12 shell-script  cpu  top  htop 

2
如何生成大量(空白)图像文件?
为了进行测试,我需要快速以定义的1000x706大小创建1700个jpg图像(甚至空白)。我想知道我们是否可以使用Shell脚本或程序(例如ImageMagick)来做到这一点。我希望他们打来img_0.jpg,img_1.jpg…… 有人知道一个简单的解决方案吗?

7
以相反顺序打印外壳参数
我有点卡住。我的任务是按相反的顺序将参数打印到脚本中,但第三个和第四个除外。 我的代码是这样的: #!/bin/bash i=$# for arg in "$@" do case $i in 3) ;; 4) ;; *) eval echo "$i. Parameter: \$$i";; esac i=`expr $i - 1` done 由于我讨厌eval(向PHP致意),因此我在寻找一种没有解决方案的解决方案,但找不到解决方案。 如何动态定义参数的位置? PS:不,这不是一项家庭作业,我正在学习考试外壳,因此我尝试解决旧的考试。

3
免费的Shell帐户安全吗?
我试图确定像shellmix.com这样的免费shell帐户的安全性。我从未用过自己的东西,但想将其推荐给对学习Shell编程感兴趣的人。他们可以安全地用于此目的吗?我应该注意什么?

3
如何在外壳中管道MD5哈希结果
我正在寻找一种将方法的结果传递md5sum到另一个命令的简单方法。像这样: $echo -n 'test' | md5sum | ... 我的问题是不仅md5sum输出字符串的哈希值,而且输出连字符,这表明输入来自标准输入。我检查了man文件,但没有找到控制输出的任何标志。

2
./executable:无法执行二进制文件
我有一个脚本,当我通过SSH服务器自己执行该脚本时效果很好,但是在持续集成服务器Hudson运行该脚本时遇到了问题。 我正在嵌入式Linux系统(目标)上自动化测试。目标通过串行连接到服务器A(RHEL 5),并通过minicom进行操作。服务器B(FC 12)构建实际在目标服务器上运行的测试,并且可以发送到服务器A。服务器C(RH)托管哈德森,而服务器B作为从服务器。 我已经编写了一个runscript(http://linux.die.net/man/1/runscript)脚本来完成实际目标所需的一切;它引导映像,从服务器B挂载目录并执行测试。服务器B上的bash脚本使用runscript脚本以及一些伴随动作来调用minicom。我在服务器B上有一个bash脚本,它使用 ssh -t -t ServerA bashScript.sh 使这些测试在目标上运行。我在服务器C上,可以通过ssh到服务器B并执行ssh到服务器A的脚本来运行那些测试,该服务器使用runscript执行minicom。ew。 回顾: 服务器A:Hudson使用其从属机制来SSH到服务器B。 服务器B:kickOffTests.sh有线路ssh -t -t ServerA runTests.sh 服务器A:runTests.sh调用一个Perl脚本,该脚本调用minicom -S my.script ttyE1 引导后目标:从服务器B挂载测试所在的目录,然后输入该目录。它调用另一个bash脚本,该脚本运行测试,它们是已编译的C可执行文件。 现在,当我自己执行这些脚本中的任何一个时,它们就会执行应有的操作。然而,当哈德森试图做同样的事情,比它抱怨在“另一个bash脚本”调用的C可执行文件,行小型机会议./executable,与./executable: cannot execute binary file 我仍然有很多关于linux的知识,但是我想这个问题是由于Hudson没有与控制台连接而造成的。我不知道哈德森到底是怎么控制它的奴隶的。我export TERM=console在运行kickOffTests.sh之前尝试在配置中使用该行,但是问题仍然存在。 谁能向我解释发生了什么以及如何解决?我无法从此等式中删除任何服务器。也许可以将minicom排除在等式之外,但这会给该项目增加未知的时间,因此我更希望使用现有的解决方案。

3
如何使管道等待文件结束或出现错误后停止?
在观看有关管道恶作剧的视频后,我尝试了以下命令。 man -k . | dmenu -l 20 | awk '{print $1}' | xargs -r man -Tpdf | zathura - 它基本上将要打印的手册页列表打印出来,供用户选择其中之一,然后使用xargs运行man -Tpdf %(打印以从xargs的输入中输出手册页git的pdf),然后将pdf传递给pdf阅读器(zathura )。 问题在于(如您在视频中看到的),即使在dmenu中选择一个联机帮助页之前,pdf阅读器也会启动。而且,如果我单击Esc并没有选择任何内容,则pdf阅读器仍处于打开状态,根本没有显示任何文档。 如何使pdf阅读器(以及管道链中的任何其他命令)仅在其输入到达文件末尾或完全收到输入时才运行?或者,或者,在链接的命令之一返回非零退出状态之后,如何使管道链停止(这样,如果dmenu返回未选择选项的错误,则不会运行以下命令)?


2
设置-u用法未按预期工作
我正在学习如何set在脚本中有效使用不同的选项,并且发现set -u如果变量未正确设置(例如删​​除用户),退出脚本似乎是完美的选择。根据手册页,set -u并set -e执行以下操作... -e Exit immediately if a command exits with a non-zero status. -u Treat unset variables as an error when substituting. 我创建了一个测试脚本来测试此功能,但似乎无法正常工作。也许有人可以更好地向我解释我的问题,而我在哪里曲解?测试脚本如下。谢谢。 set -e set -u testing="This works" echo $? echo ${testing} testing2= echo $? echo ${testing2} testing3="This should not appear" echo $? echo ${testing3} 我希望脚本显示0和“ This …

1
“ wait&”(“ wait&”符号)是有用的(流行的)shell / shell脚本惯用法或技巧吗?
我已经“继承”了运行GNU“ bash” shell的Linux机器的一些shell脚本。在一种特定情况下,机器运行GNU bash版本2.0.5b 这些脚本之一有一个wait &(“&”符号)作为for循环“ for行”的一部分。乍一看,这似乎是一种好奇/有趣的习惯用法,但是我在网上搜索时并未返回任何相关信息。man wait显示了“ BASH_BUILTINS”(“ BASH BUILTINS COMMAND”)联机帮助页,该联机帮助具有以下描述: wait [n] Wait for the specified process and return its termination status. n may be a process ID or a job spec­ification; if a job spec is given, all processes in that job's pipeline are waited for. If …

2
创建变量并通过循环(bash)分配值
有没有一种方法可以创建bash变量并通过循环为它们分配值? 类似于以下内容: #!/bin/bash c=0 for file in $( ls ); do var"$c"="$file"; let c=$c+1; done 编辑:感谢@Costas和@mdpc指出这将是列表的替代方案;这个问题只是理论上的。

3
有没有一种方法可以让我的bash脚本在任何命令错误时自动运行?
我正在编写一个需要执行一系列命令的shell脚本,每个命令都取决于每个先前的命令。如果有任何命令失败,则整个脚本将失败,我将调用退出函数。我可以检查每个命令的退出代码,但是我想知道是否存在可以启用的模式或一种使bash自动执行此操作的方法。 例如,使用以下命令: cd foo || myfunc rm a || myfunc cd bar || myfunc rm b || myfunc 有没有一种方法可以在执行这些命令之前以某种方式向外壳发出信号,如果它们中的任何一个失败,它应该调用myfunc,这样我可以编写一些更简洁的代码,例如: cd foo rm a cd bar rm b

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.