标签: scripting

每小时ping一次和电子邮件失败的脚本

我正在尝试编写一个 shell 脚本来 ping 5 台主机,每 1 小时一次,如果它从这些主机中的任何一个收到任何故障,它会发送一封电子邮件警报,其中包含此失败 ping 的结果。

shell scripting ping

2
推荐指数
1
解决办法
8007
查看次数

未定义的变量

我正在尝试使用此脚本:

#!/bin/csh
foreach SUB (1 2 3 4 5 6 7 8 9 10 11 12 13 14)
    echo $SUB
    foreach VISIT (1 2 3 4 5 6 7 8)
        echo $VISIT
        grep 'StudyDate' -f  /home/colourlab/Desktop/DrummingDTI/D${SUB}/D${SUB}V${VIS}/scout/001/infodump.dat
    done
done
Run Code Online (Sandbox Code Playgroud)

但每次我收到此错误消息时:

1
1
SUB: Undefined variable.
Run Code Online (Sandbox Code Playgroud)

我不知道为什么。

scripting csh

2
推荐指数
1
解决办法
6011
查看次数

脚本中GB转TB

应该是这样的0.972 / 3=0.324是这里的实际值。因此,如果 的值HDD UsedG 中,则应以 TB 为单位进行计算,然后进行除法。

# isi storagepool list -v |
awk '
    /Requested Protection:/ { parity=substr($NF,length($NF)-1,1) }
    /Nodes:/ { nodes=$NF }
    /HDD Total/ { hdd_total=$NF }
    /HDD Used/ { hdd_used=$NF }
    END {
        multiplier=nodes-parity
        total=hdd_total/nodes*multiplier
        used=hdd_used/nodes
        print "parity =" parity
        print "NodeNumber =" nodes
        print "Total =" total "TB"
        print "Effective Total volume = " total*0.8 " TB"
        print "USED =" used "%"
        print "Effective used=" used*multiplier*0.8 " …
Run Code Online (Sandbox Code Playgroud)

scripting awk

2
推荐指数
1
解决办法
950
查看次数

保存函数结果的全局变量的名称是否有任何约定?

shell 函数“返回”其结果的典型方法是将其分配给某个全局变量。

此变量的名称是否有任何约定/最佳实践?

scripting bash zsh function

2
推荐指数
1
解决办法
457
查看次数

将命令应用于目录中的所有文件

我想将以下命令应用于当前目录中的所有文件

clustalw -align -infile=*here goes the input filename* -outfile=*here goes the output filename*
Run Code Online (Sandbox Code Playgroud)

我还希望输出文件名与输入加上“.aln”相同。例如:

clustalw -align -infile=nexus0000.fna -outfile=nexus000.fna.aln
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助!

scripting shell-script files

2
推荐指数
1
解决办法
6580
查看次数

如何在 fileA 上找到一个字符串,从该字符串中选择一些文本并替换 fileB 上的一个字符串?

我有一个文件A和一个文件B。在fileA 中,我希望我的脚本找到特定的 stringA;然后,使用sed命令仅将 stringA 的一部分粘贴到文件 B 上(替换为 fileB 中特定 stringB 的一部分)。

例如。

文件A
阿什杰卡什杰德
阿吉克达杰斯德
推荐权重:0.546(这是感兴趣的字符串)

文件B
阿斯达什达
克贾什贾斯德
WGHT       0.495(这是FILE BI需要替换的部分)

我只想选择 stringA (0.546) 的文本并将 fileB 上的 0.495 替换为 0.546,因此,新的 fileB 将是:

新文件B
阿斯达什达
克贾什贾斯德
WGHT 0.546

使用 onlysed对我不起作用,因为它用同一文件中的 stringB 替换了 stringA,但我的 stringsA 和 B 来自不同的文件。此外,它们是“随机”生成的(通过程序)。

scripting sed text-processing

2
推荐指数
1
解决办法
155
查看次数

为什么我的 Curl 命令没有执行?

我正在开发一个 Bash 脚本,它将在全新安装后加快我的 shell。

main()
{
    #
    #   By default we assume the terminal doesn't support colors
    #
    RED=""
    GREEN=""
    YELLOW=""
    BLUE=""
    BOLD=""
    NORMAL=""

    #
    #   Check  if we are connected to a terminal, and that terminal
    #   supports colors.
    #
    if which tput >/dev/null 2>&1; then
            ncolors=$(tput colors)
    fi

    #
    #   Set the colors if we can
    #
    if [ -t 1 ] && [ -n "$ncolors" ] && [ "$ncolors" -ge 8 ]; then
        RED="$(tput setaf 1)"
        GREEN="$(tput …
Run Code Online (Sandbox Code Playgroud)

scripting bash

2
推荐指数
1
解决办法
8485
查看次数

统计不适用于空格?

我正在使用脚本根据创建文件的年份复制一些文件,它适用于没有空格的文件,但对于有空格的文件,stats 命令有问题,例如我有这个文件: file with spaces.pdf

stat -c %y ./path/to/file\ with\ spaces.pdf|cut -d '-' -f 1
Run Code Online (Sandbox Code Playgroud)

返回年份,例如:2017

但是在脚本中使用时:

year=$(stat -c %y $pathfile | cut -d '-' -f 1)
Run Code Online (Sandbox Code Playgroud)

这似乎不是工作,如果我采取了以下输出:

 echo "stat -c %y file | cut -d '-' -f 1"
Run Code Online (Sandbox Code Playgroud)

并在终端中复制它它确实有效,在所有情况下错误都是一样的,就像忽略文件名的这一部分with\ spaces.pdf::

stat: cannot stat './path/to/file\': No such file or directory
Run Code Online (Sandbox Code Playgroud)

我试过在路径中添加引号,但它似乎不起作用:

year=$(stat -c %y "$pathfile" | cut -d '-' -f 1)
Run Code Online (Sandbox Code Playgroud)

我在某处看到我需要将统计信息放在一个函数中,我这样做了:

 makestats () {
 $(stat -c %y $1|cut -d '-' -f 1)
 }
Run Code Online (Sandbox Code Playgroud)

但它似乎不起作用,如果你能给我你的帮助,我会得到同样的错误。

linux scripting bash shell-script stat

2
推荐指数
1
解决办法
636
查看次数

“crontab -”的功能

我正在编写一个 bash 脚本,除其他外,它将在另一台服务器上编辑 crontab。我想出如何做到这一点的方法是:

crontab -l | sed <stuff> | crontab -
Run Code Online (Sandbox Code Playgroud)

它完成了我需要它做的事情,但我仍然不确定如何做。“crontab -”究竟是做什么的?当我从 shell 自己运行它时,它会接管 shell,直到我按下 ctl+c,但似乎什么也没做。它的唯一目的是用从 stdin 传递的任何内容覆盖 cron 内容吗?我似乎找不到任何关于它的文档。

scripting cron pipe

2
推荐指数
1
解决办法
417
查看次数

删除bash变量中最后一个斜杠之前的所有内容

myVar在 bash 中有一个变量,其中包含一个长字符串,如下所示:

-rw-rw-rw- root/root 16 2018-02-12 10:03 foo_tar/baz1234_
Run Code Online (Sandbox Code Playgroud)

我想删除myVar最后一个斜杠(包括最后一个斜杠)之前的所有内容,这样myVar最终只存储baz1234_. 如何删除所有内容并将结果存储在变量中?

我遇到过处理 sed 的解决方案,但那些解决文件处理的问题,因此我的问题。

scripting bash tar sed

2
推荐指数
1
解决办法
6302
查看次数

标签 统计

scripting ×10

bash ×4

sed ×2

shell-script ×2

awk ×1

cron ×1

csh ×1

files ×1

function ×1

linux ×1

ping ×1

pipe ×1

shell ×1

stat ×1

tar ×1

text-processing ×1

zsh ×1