Tag: bash

如果任何命令返回一个非零值,则中止shell脚本?

我有一个Bash shell脚本来调用一些命令。 如果任何命令返回一个非零值,我希望shell脚本自动退出,返回值为1。 这可能没有明确检查每个命令的结果? 例如 dosomething1 if [[ $? -ne 0 ]]; then exit 1 fi dosomething2 if [[ $? -ne 0 ]]; then exit 1 fi

在shell中获取程序执行时间

我想在几个不同的条件下在linux shell中执行一些东西,并且能够输出每个执行的执行时间。 我知道我可以写一个perl或python脚本来做到这一点,但有没有办法在shell中做到这一点? (这恰好是bash)

如何将当前工作目录设置为脚本的目录?

我正在写一个bash脚本。 我需要当前的工作目录始终是脚本所在的目录。 默认行为是脚本中的当前工作目录是我从中运行它的shell的工作目录,但是我不想要这种行为。

如何让cp命令创build任何必要的文件夹来将文件复制到目的地

当使用cp将文件复制到可能存在或不存在的文件夹时,如何获取cp以在必要时创build文件夹? 这是我所尝试的: [root@file nutch-0.9]# cp -f urls-resume /nosuchdirectory/hi.txt cp: cannot create regular file `/nosuchdirectory/hi.txt': No such file or directory

如何获得cURL不显示进度条?

我试图在脚本中使用cURL并让它不显示进度条。 我已经尝试了-s , -silent , -S和-quiet选项,但是没有一个能够工作。 这是我尝试过的一个典型的命令: curl -s http://google.com > temp.html 推送到文件时,我只能得到进度条,所以curl -s http://google.com没有进度条,但curl -s http://google.com > temp.html 。

从Bash脚本中检测操作系统

我想将我的.bashrc和.bash_login文件保存在版本控制中,以便我可以在所有使用的计算机之间使用它们。 问题是我有一些操作系统特定的别名,所以我正在寻找一种方法来确定脚本是否在Mac OS X,Linux或Cygwin上运行 。 在Bash脚本中检测操作系统的正确方法是什么?

set -e在bash脚本中是什么意思?

我正在研究该脚本在Debian档案(.deb)文件解压缩之前执行的preinst文件的内容。 该脚本具有以下代码: #!/bin/bash set -e # Automatically added by dh_installinit if [ "$1" = install ]; then if [ -d /usr/share/MyApplicationName ]; then echo "MyApplicationName is just installed" return 1 fi rm -Rf $HOME/.config/nautilus-actions/nautilus-actions.conf rm -Rf $HOME/.local/share/file-manager/actions/* fi # End automatically added section 我的第一个查询是关于行: set -e 我认为脚本的其余部分非常简单:它检查Debian / Ubuntu包pipe理器是否正在执行安装操作。 如果是,它会检查我的应用程序是否刚安装在系统上。 如果有,脚本打印出消息“MyApplicationName刚刚安装”并结束( return 1表示以“错误”结束,不是吗?)。 如果用户要求Debian / […]

使用bash中的单个命令将默认值分配给shellvariables

我在bash(3.00)shell脚本中对variables进行了大量testing,如果未设置variables,那么它会分配一个默认值,例如: if [ -z "${VARIABLE}" ]; then FOO='default' else FOO=${VARIABLE} fi 我似乎记得在一行中有这样的语法,类似于三元运算符,例如: FOO=${ ${VARIABLE} : 'default' } (虽然我知道这是行不通的) 我疯了吗,还是有这样的事情存在?

如何从Bash函数返回一个string值

我想从Bash函数返回一个string。 我将用java编写示例来显示我想要做的事情: public String getSomeString() { return "tadaa"; } String variable = getSomeString(); 下面的例子在bash中工作,但有没有更好的方法来做到这一点? function getSomeString { echo "tadaa" } VARIABLE=$(getSomeString)

Git / Bash在Windows 7 x64中速度非常慢

在一个小型项目的开发过程中,我一直在Windows和Ubuntu上使用Git,经常在两者之间来回翻转。 我遇到的问题是Git / Bash一直变慢。 当我说慢时,我的意思是运行cd需要8-25秒,运行git命令需要5-20秒,而ls最多可能需要30秒。 不用说,这不是好玩,更不用说没有生产力了。 我知道Git在Windows上比较慢,但是这很荒谬。 对我来说暂时的一个解决scheme就是禁用我的networking连接(如本答案中的build议),启动git,然后重新连接。 有时在这样做后的几天里,它会继续快速运行,但是性能总是最终降低。 我已经通过msysgit讨论组,SO,msysgit问题列表等等几个星期的开始和closures,但我一直无法打开解决scheme的工作。 到目前为止,我已经尝试过: 将git&project文件夹添加到病毒扫描程序的排除列表中 完全禁用我的病毒扫描程序(Kaspersky IS 2011) 确保Outlook未运行(Outlook 2007) closures所有其他应用程序 以pipe理员身份运行git 禁用networking连接,启动git,并禁用连接 禁用networking连接,启动git,重新启用连接(偶尔工作) 运行git gc 以上的组合 我读过一些人已经成功禁用bash完成,但理想情况下我想保持活跃。 msysgit的版本是1.7.3.1-preview20101002&操作系统是Windows 7 x64。 在Linux上运行相同的东西,可以预见,闪电般快。 我会独占使用Linux,但是我也需要在Windows中运行东西(某些应用程序,testing等)。 有没有人遇到类似的问题? 如果是这样,底层的问题是什么,解决scheme是什么(如果有的话)? 编辑:这超出了只是git仓库,但仅供参考,我一直使用git的回购已经很小:最多4-50个文件。