Tag: bash

Bash Shell脚本 – 检查一个标志并获取它的值

我正在试图制作一个shell脚本,它被devise成像这样运行: script.sh -t application 首先,在我的脚本中,我想检查脚本是否已经用-t标志运行。 例如,如果它已经没有像这样的标志运行,我想它错误: script.sh 其次,假设有一个-t标志,我想获取值并将其存储在我可以在脚本中使用的variables中,例如: FLAG="application" 到目前为止,我在这方面取得的唯一进展是$ @抓住了所有的命令行参数,但是我不知道这是如何与标志相关的,或者甚至是可能的。

Bashtesting中的复合条件组

我想在Bash if语句中有一些条件组。 具体来说,我正在寻找如下内容: if <myCondition1 and myCondition2> or <myCondition3 and myCondition4> then… 我如何将这些条件按照我描述的方式与Bash中的一个if语句一起使用? 我感谢你对此有任何想法。

在.bashrc中包含其他文件

我有一些我想在.bashrc中执行的东西,我希望存在于系统上的另一个文件中。 我怎样才能将这个文件包含到.bashrc中?

我怎样才能格式输出一个bash命令整齐的列

我有一个函数,输出我想要在列中格式化的许多行信息。 问题是任何特定的“单元格”(如果我可能使用这个术语)数据的宽度是可变的,所以将它布置成像awk这样的东西不会给我我想要的。 该函数是“键”(不是那么重要),我想这样的事情: $ keys | awk '{ print $1"\t\t" $2 }' 但是输出(它的一个片段)看起来像这样: "option-y" yank-pop "option-z" execute-last-named-cmd "option-|" vi-goto-column "option-~" _bash_complete-word "option-control-?" backward-kill-word "control-_" undo "control-?" backward-delete-char 我怎么能强迫事物留在整齐的列? 这是可能的awk,还是我需要使用别的东西?

rm:不能删除:权限被拒绝

max@serv$ whoami max max@serv$ ls -la ./defines.php -rwxrwxrwx 1 max max 1985 2011-11-16 02:01 ./defines.php max@serv$ chmod 0777 ./defines.php max@serv$ rm ./defines.php rm: cannot remove `./defines.php': Permission denied max@serv$ 我怎样才能删除这个文件?

在bash for循环中使用命令行参数范围打印包含参数的括号

这可能是一个蹩脚的问题。 但是我从命令行得到3个参数[bash脚本]。 然后我试图在for循环中使用它们。 for i in {$1..$2} do action1 done 这似乎并没有工作,如果$1是"0"和$2是2打印{0..2}' and calls action1`只有一次。 我提到了各种例子,这似乎是正确的用法。 有人可以告诉我什么需要在这里修复? 提前致谢。

列出不符合模式的文件?

以下是如何列出与bash中的模式匹配的所有文件: ls *.jar 如何列出模式的补码? 即所有文件不匹配* .jar?

如何列出正在运行的屏幕会话?

我有一堆服务器,我使用screen运行实验。 程序如下: ssh到服务器XXX 启动screen 在几个标签中开始实验 分离screen 与服务器断开连接 在实验运行的过程中,我可以很容易地find所有服务器上的服务器,并列出正在运行的进程(使用top或ps )。 但是,一旦实验完成后,我怎么能find在哪个服务器上打开一个屏幕会话(以便我可以看看输出,重新启动它们等)? PS:我的实验也打印输出到文件,但是这不是我的问题的重点。

等待脚本中的bash后台作业完成

为了最大限度地利用CPU(我在EC2的Debian Lenny上运行)我有一个简单的脚本来并行地启动作业: #!/bin/bash for i in apache-200901*.log; do echo "Processing $i …"; do_something_important; done & for i in apache-200902*.log; do echo "Processing $i …"; do_something_important; done & for i in apache-200903*.log; do echo "Processing $i …"; do_something_important; done & for i in apache-200904*.log; do echo "Processing $i …"; do_something_important; done & … 我对这个工作解决scheme非常满意,但是我不知道如何编写进一步的代码,只有在所有的循环完成后才执行。 有没有办法控制这个?

/ bin / sh:语法错误:未终止的带引号的string

我想获得一个cronjobpipe道输出到指定的(文件夹)位置的date文件。 我的crontab条目看起来像这样: * * * * * /some/path/test.sh >> $(date "+/home/oompah/logs/%Y%m%d.test.log") 我不明白的是,当我在控制台input这个命令,我得到正确的string: echo $(date "+/home/oompah/logs/%Y%m%d.test.log") /home/oompah/logs/20110329.test.log 什么原因导致这个错误,我该如何解决? bash版本信息是: GNU bash,版本4.1.5(1)-release(x86_64-pc-linux-gnu)