我正在编写一个脚本来备份数据库。 我有以下行: mysqldump –user=$dbuser –password=$dbpswd \ –host=$host $mysqldb | gzip > $filename 我想把stderr分配给一个variables,这样它会发送一封邮件给我自己,让我知道发生了什么事情,如果出现问题。 我已经find解决schemeredirect标准输出到标准输出,但我不能这样做,标准输出已经被发送(通过gzip)到一个文件。 我怎样才能单独存储stderr在一个variables$结果?
当我使用Git Bash(在Windows上)时,如果不指定完整path,我不能运行任何可执行文件,虽然它位于PATHvariables中的一个文件夹中。 看起来bash不承认它。 为什么? 我可以修复它吗?
我在写一个UNIX shell函数,它将执行一个命令,提示用户input密码。 我想将密码硬编码到脚本中并提供给命令。 我已经尝试将密码input到命令中,如下所示: function() { echo "password" | command } 这可能不适用于某些命令,因为在提示input密码之前,命令可能会刷新input缓冲区。 我也试着将标准inputredirect到一个包含这样的密码的文件,但是这也不起作用: function() { echo "password" > pass.tmp command < pass.tmp rm pass.tmp } 我知道有些命令允许将密码作为参数提供,但我宁愿通过标准input。 我正在寻找一个快速和肮脏的方式在bash中input密码到一个命令。
bash中是否有“goto”声明? 我知道这被认为是不好的做法,但我特别需要“转到”。
考虑这个片段: $ SOMEVAR=AAA $ echo zzz $SOMEVAR zzz zzz AAA zzz 在这里我已经在第一行设置了$SOMEVAR到AAA ,当我在第二行回显它时,我得到了预期的AAA内容。 但是,如果我尝试在echo的同一个命令行上指定variables: $ SOMEVAR=BBB echo zzz $SOMEVAR zzz zzz AAA zzz …我没有像预期的那样得到BBB – 我得到了旧的价值( AAA )。 这是事情应该如何? 如果是这样,那么你怎么能指定像LD_PRELOAD=/… program args …variablesLD_PRELOAD=/… program args …并有它的工作? 我错过了什么?
我有一个这样的格式的date:“2011年6月27日”,我想将其转换为20110627 是否有可能在bash中做?
评论者对另一个问题的 回答评论说: 除非绝对必要,否则不要使用kill -9! SIGKILL不能被困住,所以被杀的程序不能运行任何关机例程来擦除临时文件。 首先尝试HUP(1),然后INT(2),然后QUIT(3) 我原则上同意SIGKILL ,但其余的消息给我。 鉴于kill发送的默认信号是SIGTERM ,我认为这是任意进程正常closures的最常见的信号。 另外,我已经看到SIGHUP用于非终止的原因,比如告诉守护进程“重新读取你的configuration文件”。 而在我看来, SIGINT (与Ctrl-C相同的中断,对吗?)没有得到广泛的支持,或者是非常不正常的结束。 鉴于SIGKILL是最后的select – 哪些信号,以什么样的顺序发送到一个任意的进程,以尽可能优雅地closures它? 如果可以的话,请提供支持事实(超出个人偏好或意见)或参考资料来证实您的答案。 注:我特别感兴趣的最佳做法,包括考虑bash / Cygwin。 编辑:到目前为止,似乎没有人提到INT或QUIT,并且HUP的提及有限。 有什么理由把这些包括在一个有序的过程中?
是否有可能从脚本更改当前目录? 我想为bash中的目录导航创build一个util。 我创build了如下所示的testing脚本: #!/bin/bash cd /home/artemb 当我从bash shell执行脚本时,当前目录不会改变。 是否有可能从脚本中更改当前shell目录?
我正在编写一个脚本来为我自己的web服务器自动创buildApache和PHP的configuration文件。 我不想使用任何GUI,如CPanel或ISPConfig。 我有一些Apache和PHPconfiguration文件的模板。 Bash脚本需要读取模板,进行variablesreplace并将parsing后的模板输出到某个文件夹中。 什么是最好的方法来做到这一点? 我可以想到几种方法。 哪一个是最好的,或者可能有一些更好的方法来做到这一点? 我想在纯粹的Bash中做到这一点(在PHP中很容易) 1) 如何在文本文件中replace$ {}占位符? template.txt: the number is ${i} the word is ${word} script.sh: #!/bin/sh #set variables i=1 word="dog" #read in template one line at the time, and replace variables #(more natural (and efficient) way, thanks to Jonathan Leffler) while read line do eval echo "$line" done < […]
我想通过一堆目录,并重命名以_test.rb结尾的所有文件,而不是以_spec.rb结尾。 这是我从来没有想过如何处理bash,所以这次我想我会付出一些努力来钉牢。 尽pipe我到目前为止已经尽力了,但我的最大努力是: find spec -name "*_test.rb" -exec echo mv {} `echo {} | sed s/test/spec/` \; 注意:在exec之后还有一个额外的回声,这样当我testing它时,命令就会被打印出来而不是运行。 当我运行它时,每个匹配的文件名的输出是: mv original original 即sed的replace已经丢失。 有什么窍门?