Tag: bash

检查string在shell脚本中是否既不空也不空格

我试图运行下面的shell脚本,应该检查一个string既不是空格也不是空的。 但是,我得到的所有3个string的输出相同。 我曾尝试使用“[[”语法,但无济于事。 这是我的代码: str="Hello World" str2=" " str3="" if [ ! -z "$str" -a "$str"!=" " ]; then echo "Str is not null or space" fi if [ ! -z "$str2" -a "$str2"!=" " ]; then echo "Str2 is not null or space" fi if [ ! -z "$str3" -a "$str3"!=" " ]; then […]

如何在BASH脚本的引用string中使用环境variables

我已经在bash脚本中尝试了以下各种forms: #!/bin/bash svn diff $@ –diff-cmd /usr/bin/diff -x "-y -w -p -W $COLUMNS" 但是我无法获得正确扩展COLUMNS环境variables的语法。 我已经尝试了以下各种forms: svn diff $@ –diff-cmd /usr/bin/diff -x '-y -w -p -W $COLUMNS' 和 svn diff $@ –diff-cmd /usr/bin/diff -x '-y -w -p -W ${COLUMNS}' 和 eval svn diff $@ –diff-cmd /usr/bin/diff -x "-y -w -p -W $COLUMNS" build议?

什么是&&意思?

我对这个expression有些困惑: gcc -c -g program.c >& compiler.txt 我知道&>filename名将redirectstdout和stderr文件的文件filename 。 但在这种情况下,&符号大于符号。 它看起来像M>&N的forms,其中M和N是文件描述符。 在上面的代码片断中, M=1和N='compiler.txt' ? 这与以下不同: gcc -c -g program.c > compiler.txt (ampersand removed) 我的理解是,每个打开的文件都与一个大于2的文件描述符关联。这是正确的吗? 如果是这样,是一个文件名与其文件描述符可以互换作为redirect的目标?

什么是diff的错误退出值?

在diff手册页上,我发现这些退出值: 0 No differences were found. 1 Differences were found. >1 An error occurred. 对于不同的错误,是否有超过1的不同退出值?

在bash中,有没有相当于“错误信息”

在perl中,你可以用die "some msg"退出一个错误消息。 在bash中是否有等价的单个命令? 现在,我正在使用命令来实现这个: echo "some msg" && exit 1

将date时间string转换为bash命令中的UNIX时间戳

date时间string采用以下格式:06/12/2012 07:21:22。 我怎样才能把它转换成UNIX时间戳?

检查一个文件是否可执行

我想知道什么是最简单的方法来检查程序是否可以用bash执行,而不执行它? 它至less应该检查文件是否具有执行权限,并且与当前系统具有相同的体系结构(例如,不是Windows可执行文件或其他不受支持的体系结构,如果系统是32位,则不是64位)。

Linux shell脚本将前导零添加到文件名

我有一个约1700个文件的文件夹。 他们都被命名为1.txt或1497.txt等,我想重新命名所有的文件,所有的文件名是四位数字。 即, 23.txt变成0023.txt 。 什么是一个shell脚本会做到这一点? 或者一个相关的问题:我如何使用grep来匹配包含\d.txt (即一个数字,然后是句点,然后是字母txt )? 以下是我到目前为止: for a in [command i need help with] do mv $a 000$a done 基本上,运行三次,用命令find一个数字,两个数字和三个数字的文件名(初始零的数量改变)。

$ HOME和“〜”(代字号)之间的区别?

我一直认为$HOME和~是完全一样的,因此可以互换使用。 今天,当我试图安装pylibmc ,一个Python绑定到memcached,在我的共享服务器上使用~给了我错误,但不是$HOME 。 我想解释一下为什么。 libmemcached是pylibmc的一个要求。 我有libmemcached安装在我的主目录下,因为我在服务器上没有根。 因此,要安装pylibmc ,我需要确保安装脚本知道在哪里findlibmemcached 。 当执行python setup.py install –with-libmemcached=~ ,安装脚本运行 gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall \ -Wstrict-prototypes -fPIC -DUSE_ZLIB -I〜/ include \ -I / usr / local / include / python2.7 -c _pylibmcmodule.c \ -o build / temp.linux-i686-2.7 / _pylibmcmodule.o -fno-strict-aliasing 这给出了libmemcached无法find的错误。 如果我更改为–with-libmemcached=$HOME ,脚本运行 gcc […]

检测是否安装了自制软件包

我即将编写一个shell脚本来检测系统中是否安装了多个自制软件包。 有没有办法使用brew命令来实现? 我尝试使用brew install <formula> –dry-run的退出代码。 但是,如果缺less这个包,就会构build这个包。