草庐IT

BASH_SOURCE

全部标签

linux - 发生段错误时停止 linux bash 脚本

如果在linuxbash脚本中调用程序导致段错误,如何注意到,可能会停止脚本? 最佳答案 如果程序以段错误或任何其他错误退出,它将以非零退出代码退出。您可以测试此退出代码,并在执行此操作时退出您的脚本。如果你想停止任何错误(不仅仅是段错误),你可以使用:some-crashy-programargs||exit1如果您希望在调用的任何程序返回错误时退出脚本(作为if或while的一部分除外)语句),您可以在脚本的开头调用set-e,以便在任何命令失败时立即退出脚本。在需要随时间维护的较大脚本中,这种用法有点不鼓励,因为如果grep之

linux - 在 bash 中解析 CSV 并分配变量

我有一个格式的csv(在Linux上使用Bash)DN,MAC,Partition,123,abc,xyz321,asd,asd我可以通过使用awk来解析它evalMAC=($(awk-F","'{print$1}'random.csv))这是针对CSV中的每一列完成的,因此我可以单独调用DN[2]、MAC[2]等,这是手动的并单独解析它们。但是如何按行解析csv?例如:如果我调用DN是123,那么相应的MAC和Partition也应该被返回。 最佳答案 尝试循环:whileIFS=,readdnmacpartitiondoecho

linux - 在bash中用其他文件过滤一个文件

我有一个带有数字的文件,例如:$catfile31038467320481693305856434088662350939643101816831138061312083693153816331798862和其他例如$catfile23120836933058564340886623153816331038467然后我需要其他文件,其中包含第一个文件中但不在第二个文件中的行cat$output3509396431018168311380613179886232048169我的真实文件有12'000.0000行。那我该怎么做呢? 最佳答案

linux - Bash shell - 按第二个字母对单词列表进行排序?

我需要按第二个字母的字母顺序对单词列表进行排序,但我似乎想不出一种方法来做到这一点。未分类:smokelesslytoelikearsenousmalabarantiperspiranthocknibbingpaleographicallygoon排序:malabarpaleographicallynibbingsmokelesslyantiperspiranthocktoelikegoonarsenous我读过有关sort命令的内容,但它似乎没有让我执行此操作的功能? 最佳答案 sort-kX.Y是你的friend!X指列,Y指字

linux - Shell 脚本中的数组,而不是 Bash

我可能只是脑袋放屁,但我终其一生都无法弄清楚如何在shell脚本而不是bash中循环遍历数组。我确定答案已经在某个地方的stackoverflow上了,但是我找不到不使用bash的方法。对于我的嵌入式目标系统,bash目前不是一个选项。这是我尝试执行的操作以及返回的错误的示例。#!/bin/shenable0=1enable1=1port=0while[${port}-lt2];doif[${enable${port}}-eq1]then#dosomestufffiport=$((port+1))done每当我运行此脚本时,都会为带有if语句的行返回错误“Badsubstitution

linux - 在bash中每n个命令执行一次函数

我想制作一个程序,在bash中每n个命令执行一次。例如,我希望用户在bash中每5个命令回答一个问题。我认为这个功能可以只使用bash脚本来实现,因为我找不到合适的解决方案。我不想编译新的bash,我认为这可以通过bash脚本来完成。如果是这样,我必须更改bashrc吗? 最佳答案 您可以使用自定义函数在shell中捕获DEBUG信号。runcmd(){if((n==5));thenn=0;pwd;else((n++));fi;}trap'runcmd'DEBUG使用自定义命令或脚本更改pwd。trap'handler'DEBUG在

linux - 使用 for 循环 seq 分配动态 bash 变量名

所以我正在尝试做一些事情,不确定是否可行。我有以下代码:foriin{0..5};doif[[-f./user$i]];thengroup$i=$(grep-w"group"./user0|awk'{print$2}'|perl-lape's/\s+//sg')我想要做的是为{0..5}的每个实例分配一个唯一的变量,因此group1group2group3group4为每个变量名称。然后我会将./user0更改为./user$i并根据我的顺序创建一个动态变量列表。这可能吗?尝试执行此操作时出现以下错误,我不确定我实际做了哪些bash不喜欢的事情。test.sh:line16:group

python - Bash:按字节区分大小写的排序命令或使用 python 排序命令对文本文件进行排序

文本文件使用排序-s(区分大小写)ActBadBagCardEastaboutacrossbackballcameracanvasdangerdarkearlyedge使用sort-f(不区分大小写)aboutacrossActbackBadBagballcameracanvasCarddangerdarkearlyEastedge以大写字母开头的单词在小写单词之间按字母顺序排序。我想要的是大写单词位于每个下一个字母的开头(按大写字母顺序排序):预期输出:ActaboutacrossBadBagbackballCardcameracanvasdangerdarkEastearlyedg

python - 为什么我的 post-receive Hook 不能运行 virtualenv source 命令?

我有一个以用户“git”身份运行的接收后Hook。我有一个git可读的virtualenv/python/ve//bin/activate。运行:source/python/ve//bin/activate适用于git组中的用户。当它在推送后作为接收后Hook运行时,我收到错误“source:notfound”。我不确定还有什么地方可以看-非常感谢任何提示。 最佳答案 这是一个猜测,因为您还没有引用完整的post-receive钩子(Hook),但我怀疑您没有shebangline指向顶部的/bin/bash。您的post-rece

linux - Bash Shell 执行 While Loop 无限循环?

基本上这是我的代码:bay=$(prog-someflags)while[$bay="Anotherinstanceofthisprogramisrunning,pleaseexititfirst"]doecho"AwaitingAccesstoprogram"do.....我有一个程序,由于它与我的硬件交互的方式,一次只允许一个实例运行,当另一个实例正在运行时,它会弹出以下消息“该程序的另一个实例正在运行,请退出它首先”。我需要能够运行多个将使用同一个程序的脚本,所以我决定使用上面的代码。我的问题是,当我运行我的两个脚本时,一个将获得对程序的访问权限并按需要运行,但另一个将注意到错误