Articles of 庆典

只有在variables非空时才引用

我有一个古老的bash脚本,我想改进。 这个脚本使用了许多variables,在某些情况下,一些variables被引用,但是是空的或者是未设置的。 这通常不是一个问题,因为脚本从一开始就是这样devise的。 不过,我已经开始使用shellcheck ,它抱怨失踪报价很多。 所以我添加了引号,并且遇到了一个不便,我没有一个很好的解决scheme。 有很多行看起来像这样: cmd $param1 $param2 $param3 $param4 如果其中一个参数是空的或未设置的,它仍然在工作,cmd获得的参数数量减less。 但是,如果我开始添加引号 cmd "$param1" "$param2" "$param3" "$param4" cmd总是会得到4个参数,不pipe它们是否为空。 为什么这是非常清楚的。 解决方法也是清楚的(在使用param之前检查是否为空),但是它很丑,需要大量额外的代码。 所以我正在寻找聪明的解决scheme,要么a)省略一个参数(包括引号!),如果它是空的b)添加引用只为非空variables

bash脚本。 如何用这里的文件做输出redirect

我有一个bash脚本,我正在使用这里的文件运行ac程序,因为c程序需要来自用户的input。 所以我有这样的事情 #!/bin/bash ./runnable inputfile.txt <<_END_ 2 4 3 4 3 3 2 _END_ 现在我想从上述命令的输出发送到其他文件。 就像我们会做的一样 ls > file.txt 那可能吗?

删除所有不以某事开头的文件

在Linux中,如何删除不以pref开头的目录中的所有文件(例如sess_ *)?

启动java进程并在10秒后进行监视

我想开始一个java进程…然后检查它是否仍然运行10秒后从一个bash脚本。 是否有捷径可寻?

如何将成功的命令追加到使用bash shell的文件中?

这样做可能会更简单,我将在一个盒子上运行一堆命令。 我想跟踪成功的,以便我可以从中创build一个脚本来自动化。 我试过了 <command> && echo "!!" >> file 但!! 在这之前打印行。 我已经尝试了一些其他的东西,但不能得到的东西工作

bash – 在没有“完整”通知的情况下分叉一个进程

只是一个简单的问题,我遇到了麻烦谷歌search出于某种原因。 当我像这样在bash中插入一个进程时: $ mything & 它在10秒后完成,它会中断我的terminal,如下所示: [1]+ Done mything 有没有办法来禁用这个? 我想在后台运行它,但是我希望它永远不会回来告诉我任何事情。

新的bash – “意外的文件结束”

我试图设置一个简单的bash脚本来检查日志中是否出现错误消息,如果该日志中出现错误消息“重置适配器”,服务器应该给我们发电子邮件。 每当我运行下面的脚本我遇到了“Bash Script.sh:第4行:语法错误:意外的文件结束” if fgrep 'reset adapter' /var/log/messages.log then mail -s 'Flapping ethernet' [email protected] fi 有任何想法吗? 更新: 添加了build议; 之前“那么”,仍然得到相同的错误。 新脚本: if fgrep -q 'reset adapter' /var/log/messages; then mail -s 'Flapping ethernet' [email protected] fi

从sed或diff的所有文件中排除黑客代码

可能重复: 我的服务器被黑了应急 你好, 我急需你的帮助,因为服务器已被黑客入侵,我没有时间学习如何从所有文件中删除黑客的代码。 我附加了添加到所有文件的代码。 在这个代码中有很多特殊的字符,它是相当大的。 它被添加到文件有时两次。 我不知道sed很好解决这个问题。 如何从所有文件中排除这段代码? 使用sed,diff / patch或其他技术? 以下是要删除的代码的一部分: <?php global $ob_starting; if(!$ob_starting) { function ob_start_flush($s) { $tc = array(0, 69, 83, 84, 82, 67, 7, 79, 9, 8, 23, 73, 12, 76, 68, 78, 63, 24, 14, 19, 3, 65, 27, 17, 85, 70, 80, 16, 29, 11, 89, 86, […]

如何在bash中分配variables而不使用$?

有没有更容易/更优雅的方式来分配一个返回值的variables? 到目前为止,我一直在做这样的事情: some_command_to_run VAR_TO_SET=$? 但我更愿意把它全部放在一行上,最好不要用$? variables。 有谁知道如何?

我的bash数组有什么问题?

任何人都可以告诉我为什么这个bash脚本工作,如果我剪切和粘贴到terminal,但引发“server_prep.sh:7:语法错误:”(“意外”启动时使用$ sudo sh server_prep.sh? #!/bin/sh #Packages apt-get -y install ssh libsqlite3-dev ruby-full mercurial #Gems required_gems = ( rake rails sqlite3-ruby ) #Set up directories [ ! -d /var/www ] && mkdir /var/www [ ! -d /var/www/apps ] && mkdir /var/www/apps #install gems manually if ! which gem >/dev/null; then wget http://rubyforge.org/frs/download.php/60718/rubygems-1.3.5.tgz tar xvfz rubygems-1.3.5.tgz ruby […]