Questions tagged «shell-script»

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


5
从匹配行打印匹配行和第n行
我正在尝试从匹配的行(包含我要搜索的表达式的行)中打印匹配的行和第四行。 我一直在使用以下代码: sed -n 's/^[ \t]*//; /img class=\"devil_icon/,4p' input.txt 但这仅打印匹配的行。 仅打印第四行。 awk 'c&&!--c;/img class=\"devil_icon/{c=4}' input.txt 我只需要打印匹配的行和第四行。

3
ps命令的CPU字段如何排序?
我正在尝试执行一条小命令,以查找使用最多CPU能力的进程。 首先,我使用ps aux > file.txt然后cut -c 16-20 file.txt | sort -n | tail -5。 我得到的结果是这样的: 1.0 2.7 8. 14.5 14.5 所以我的问题是如何将%CPU用法和其他字段一起输出?
18 bash  shell-script  sort  ps 

3
并行循环浏览两个文件的行
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Unix&Linux Stack Exchange 的主题。 5年前关闭。 我正在编写的脚本的目的是比较两个系列的文件。文件名本身存储在两个单独的文件中,每行一个路径。我的想法是有两个while read循环,每个文件名列表一个,但是如何将两个循环混在一起? while read compareFile <&3; do if [[ ! $server =~ [^[:space:]] ]] ; then #empty line exception continue fi echo "Comparing file - $compareFile" if diff "$compareFile" _(other file from loop?_) >/dev/null ; then echo Same else echo Different fi done …



7
收集并行后台进程的退出代码(子shell)
假设我们有一个bash脚本,如下所示: echo "x" & echo "y" & echo "z" & ..... echo "Z" & wait 有没有办法收集子外壳程序/子进程的退出代码?寻找这样做的方法,找不到任何东西。我需要并行运行这些子shell,否则,这会更容易。 我正在寻找一个通用的解决方案(我有一个未知/动态数量的子进程可以并行运行)。

1
Bash中'2>>((command)')重定向的含义
不久前,我制作了一个脚本,并在其中添加了一些日志记录,但是我忘记了日志记录的重定向是如何工作的:-( 其要点是: #!/bin/bash LOGFILE=/some/path/mylogfile ( # here go my commands which produce some stdout # and, if something goes wrong, also some stderr ) 1>>${LOGFILE} 2> >( tee -a ${LOGFILE} >&2 ) 当我运行脚本时,它不会将任何内容打印到stdout,而只会打印到的内容stderr。日志文件同时${LOGFILE}捕获stdout和stderr。 当我运行脚本并且终端上没有输出时,我知道一切都很好。如果有任何输出,我知道出了点问题,可以检查日志文件以找出问题所在。 现在让我感到困惑的重定向部分的语法是: 2> >( some command ) 谁能解释那里发生了什么?

2
如何从嵌套的case语句中退出while循环?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Unix&Linux Stack Exchange 的主题。 4年前关闭。 在下面的脚本中-提示用户确认要继续运行潜在的错误脚本-当用户Y在提示符下输入时-该脚本将跳出该case块,仅while再次发送回循环中。 #! /bin/bash set -e echo echo "bad install start" echo "-----------------------------------------" while true; do read -p "this script will probably fail - do you want to run anyway?" yn case $yn in [Yy]*) ##### WHAT GOES HERE?? ##### ;; [Nn]*) exit ;; …

8
cronVS。睡眠-就有效的CPU /内存利用率而言,哪种更好?
案子: 我需要在特定的时间间隔运行一些命令/脚本,为此,我有两个选择: 成立了cron-job sleep在脚本本身中实现一个循环。 题: 从资源消耗的角度来看,哪个是更好的选择,为什么?是cron更好的方法吗?cron是否使用某种触发器或使其比其他触发器更有效的触发器?cron使用什么程序来检查和启动作业?

2
zsh:从模式中排除文件
说我有以下文件: |-- bar `-- foo |-- type_A_1 |-- type_A_2 |-- type_B_1 |-- type_B_2 |-- type_B_xx |-- type_B_xx `-- something_else 我以为以下命令 print -l foo/*~{type_B*} 将打印一切下foo ,除了东西下手type_B,但它并没有,而是在富打印的一切: foo/type_A_1 foo/type_A_2 foo/type_B_1 foo/type_B_2 foo/type_B_xx foo/something_else 我也尝试过print -l foo/*~type_B并得到了同样的东西。 异常通配符~在zsh中如何工作?

1
在Heredoc中传递和设置变量
我有一个脚本,必须在许多不同的远程计算机上执行许多不同的事情。我以为Heredoc可以解决这个问题,但是我无法使用脚本中其他地方定义的变量和 Heredoc中定义的变量。 这是一些代码: #!/bin/sh FOO="foo" ssh some.remote.host << EOF BAR="bar" echo "FOO=$FOO" echo "BAR=$BAR" EOF 这只会打印以下内容: FOO = BAR =酒吧 但是,如果我这样引用EOF行: ssh some.remote.host << "EOF" 那么它仅显示以下内容: FOO = foo BAR = 关于如何在Heredoc中使用这两个变量的任何提示? 谢谢。

4
如何在源代码中的read -p提示符下将长字符串分成多行?
我正在编写将以方式运行的安装脚本/bin/sh。 有一行提示输入文件: read -p "goat can try change directory if cd fails to do so. Would you like to add this feature? [Y|n] " REPLY 我想把这条长行分成多行,以使它们都不超过80个字符。我说的是脚本源代码中的几行;与执行脚本时要在屏幕上实际打印的行无关! 我尝试过的 第一手方法: read -p "goat can try change directory if cd fails to do so. " \ "Would you like to add this feature? …

5
如果未定义变量,请避免运行脚本
我有一个脚本看起来像: c=0 for f in */*; do cp -v "$f" "/myhome/CE$(printf '%0*d' 2 $BATCHNUM)-new-stuctures_extracted/test-$(printf '%0*d' 5 $c)" c=$((c=c+1)) done 但是,用户必须提供一个调用BATCHNUM的变量,否则我需要强制该脚本停止运行。如果我也可以强制停止调用此脚本的脚本(甚至是调用#2脚本的#1脚本也要停止),那会更好。

3
awk:强制返回状态吗?
这是我先前问题的跟进。 我正在使用此方便的代码段验证/ etc / passwd中的字段数。在以下示例中,用户“ fieldcount1”和“ fieldcount2”具有错误的字段数: $ awk -F: ' NF!=7 {print}' /etc/passwd fieldcount1:x:1000:100:fieldcount1:/home/fieldcount1:/bin/bash:::: fieldcount2:blah::blah:1002:100:fieldcount2:/home/fieldcount2:/bin/bash: $ echo $? 0 您会注意到,awk将以0的返回状态退出。从它的角度来看,这里没有问题。 我想将此awk语句合并到shell脚本中。我想打印所有错误的行,并将返回代码设置为1(错误)。 我可以尝试强制使用特定的退出状态,但是awk仅打印一行: $ awk -F: ' NF!=7 {print ; exit 1}' /etc/passwd fieldcount1:x:1000:100:fieldcount1:/home/fieldcount1:/bin/bash:::: $ echo $? 1 我可以强制awk以返回状态“ 1”退出并打印所有匹配的行吗?

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.