Tag: bash

如何从Bashvariables修剪空白?

我有这个代码的shell脚本: var=`hg st -R "$path"` if [ -n "$var" ]; then echo $var fi 但是条件代码总是执行,因为hg st总是打印至less一个换行符。 有没有一种简单的方法来从$var删除空白(如PHP中的 trim() )? 要么 有没有处理这个问题的标准方式? 我可以使用sed或AWK ,但是我想认为这个问题有一个更优雅的解决scheme。

sed命令与-i选项在Mac上失败,但在Linux上工作

我已经成功地使用下面的sed命令在Linux中search/replace文本: sed -i 's/old_link/new_link/g' * 但是,当我在我的Mac OS X上尝试它时,我得到: “命令c期望\后跟文本” 我以为我的Mac运行一个正常的BASH shell。 这是怎么回事? 编辑: 根据@High Performance的说法,这是由于Mac sed具有不同的(BSD)风格,所以我的问题是如何在BSD sed复制这个命令? 编辑: 这是一个实际的例子,导致这个: sed -i 's/hello/gbye/g' *

如何debugging一个bash脚本?

有没有什么办法来debugging一个bash脚本? 例如,打印某种执行日志,如“呼叫线路1”,“呼叫线路2”等

如何检查一个variables是否在Bash中设置?

我如何知道是否在Bash中设置了一个variables? 例如,如何检查用户是否给函数第一个参数? function a { # if $1 is set ? }

什么是特殊的美元符号shellvariables?

在Bash中,似乎有几个variables具有特殊的,一致的含义值。 例如, ./myprogram &; echo $! 将返回后台myprogram进程的PID。 我知道别人,比如$? 我认为这是目前的TTY。 有其他人吗?

杀死所有subprocess的最好方法

我想杀死整个进程树。 使用任何通用脚本语言来做这件事的最好方法是什么? 我正在寻找一个简单的解决scheme。

用空格遍历文件列表

我想迭代一个文件列表。 这个列表是find命令的结果,所以我想出了: getlist() { for f in $(find . -iname "foo*") do echo "File found: $f" # do something useful done } 没关系,除非文件名中有空格: $ ls foo_bar_baz.txt foo bar baz.txt $ getlist File found: foo_bar_baz.txt File found: foo File found: bar File found: baz.txt 我能做些什么来避免在空间上的分裂?

如何将DOS / Windows换行符(CRLF)转换为Unix换行符(\ n)在Bash脚本中?

我怎样才能以编程方式(即不使用vi )将DOS / Windows换行符转换成Unix? dos2unix和unix2dos命令在某些系统上不可用。 我如何用sed / awk / tr等命令来模拟这些命令?

如何在Bash中parsingXML?

理想情况下,我希望能够做的是: cat xhtmlfile.xhtml | getElementViaXPath –path='/html/head/title' | sed -e 's%(^<title>|</title>$)%%g' > titleOfXHTMLPage.txt

我怎样才能redirect和附加stdout和stderr到Bash文件?

要将stdoutredirect到Bash中的截断文件,我知道使用: cmd > file.txt 要在Bash中redirectstdout ,附加到一个文件,我知道使用: cmd >> file.txt 为了将stdout和stderrredirect到截断的文件,我知道使用: cmd &> file.txt 如何redirectstdout和stderr追加到文件? cmd &>> file.txt没有为我工作。