Tag: shell

Shell脚本通用模板

数百万开发人员编写shell脚本来解决各种types的任务。 我使用shell脚本来简化部署,生命周期pipe理,安装或简单地作为粘合剂语言 。 我注意到没有人真正关心shell脚本的风格和质量。 很多团队花了好几个小时修复Java,C ++,…样式问题,但完全忽略了他们的shell脚本中的问题。 顺便说一下,通常在特定项目中没有实现shell脚本的标准方法,因此可能会在代码库中find几十个不同的丑陋的错误脚本。 为了在我的项目中克服这个问题,我决定创build一个通用的,足够好的shell脚本模板。 我将提供我的模板,使这个问题更有用。 开箱即用这些模板提供: 命令行参数处理 同步 一些基本的帮助 处理参数:getopts (最新版本: shell-script-template @ github ) #!/bin/bash # —————————————————————— # [Author] Title # Description # —————————————————————— VERSION=0.1.0 SUBJECT=some-unique-id USAGE="Usage: command -ihv args" # — Options processing ——————————————- if [ $# == 0 ] ; then echo $USAGE exit 1; fi while getopts […]

如何在Mac OSX Mountain Lion中升级Bash并将其设置为正确的path?

因为Mountain Lion仍然使用旧的bash 3.x,所以我想知道是否有一个很好的教程(或者如果有人可以在这里发布),如何将bash升级到最新版本。 另外,知道如何设置path以便可以在terminal中使用将是有帮助的。 提前致谢

Linux脚本中的start-stop-daemon是什么?

什么是启动 – 停止守护进程,应该如何使用? 我正试图自动运行一个特定的程序。 每当系统启动时,程序应该运行。 为此,我正在“/etc/init.d/”位置写脚本。

$ {BASH_SOURCE }等价于zsh?

标题应该说明一切。 我正在寻找等价于zsh中的${BASH_SOURCE[0]} 。 注意:我在互联网上一直发现“ $0相当于${BASH_SOURCE[0]} ”,但这似乎是错误的: $0似乎是正在执行的命令的名称。 (这是argv[0] ,这是有道理的)。在我的脚本( .zshrc )中回显$0会给出$0 zsh ,这与${BASH_SOURCE[0]}是不一样的。 事实上, ${BASH_SOURCE[0]}似乎在zsh工作,除了.zshrc文件内部。 我真的在我的.zshrc (这是行不通的): echo ${BASH_SOURCE[0]} source `dirname $0`/common-shell-rc.sh 源失败( $0是zsh ), echo输出一个空行。 编辑: 显然,为$0工作,我需要选项FUNCTION_ARGZERO选项设置。 任何方式来testing这是否在脚本中设置? (这样我可以暂时设置它)显然,除非你设置nofunction_argzero ,并且它在我的shell中。 $0仍然没有得到。 (我认为B / C我不在function。)

如何强制'cp'来覆盖目录,而不是在里面创build另一个?

我想写一个Bash脚本,将覆盖现有的目录。 所以,我有一个目录富/我正在尝试覆盖吧/与它。 但是当我这样做, cp -Rf foo/ bar/ 会发生什么是一个新的bar / foo /目录被创build。 我不要那个。 在foo / a和b中有两个文件。 在bar /中也有相同名称的文件。 我想要foo / a和foo / b来replacebar / a和bar / b。

Powershell和条件运算符

要么我不明白MSDN文档或文档是不正确的。 if($user_sam -ne "" -and $user_case -ne "") { write-host "Waaay! Both vars have values!" } else { write-host "One or both of the vars are empty!" } 我希望你明白我在试图输出什么。 我想填充$ user_sam和$ user_case为了访问第一个语句!

Bash命令行和input限制

在bash(或其他shell)中input的字符数限制是多less? 如果是的话,这个字符的限制是什么? 即是否有可能编写一个命令在bash中是太长的命令行执行? 如果没有要求的限制,是否有build议的限制?

相当于windows .cmd中的rm和mv

我有一个shell脚本中的以下内容,我想将下面的行转换成一个Windows cmd文件..任何人都可以提供什么是在Windows CMD文件中“rm”和“mv”等效的input。 rm -f ${BUILD_ID}/${BUILD_ASIC}*rampatch* mv ${BUILD_ID}/${BUILD_ASIC}*rampatch* ${BUILD_ID}/emul/

检查环境variables

我想检查一个环境variables的值,并根据值做某些事情,只要variables设置它工作正常。 当它不是,虽然我得到了一大堆错误(因为BASH试图比较我指定的string与一个未定义的variables,我猜) 我试图执行一个额外的检查,以防止发生,但没有运气。 我使用的代码块是: #!/bin/bash if [ -n $TESTVAR ] then if [ $TESTVAR == "x" ] then echo "foo" exit elif [ $TESTVAR == "y" ] then echo "bar" exit else echo "baz" exit fi else echo -e "TESTVAR not set\n" fi 这是输出: $ export TESTVAR=x $ ./testenv.sh foo $ export TESTVAR=y $ ./testenv.sh […]

我可以用PowerShell写一个类吗?

我还在学习PowerShell,到目前为止,我还没有在这个网站上find答案,尽pipe有一些search。 随着Powershellbuild立在.NET框架之上,我可以使用Powershell编写自己的自定义类吗? 我不是在讨论实例化.NET类…这个部分很简单。 我想使用PowerShell脚本编写自己的自定义类。 可能? 到目前为止,我的研究让我说这是不可能的。 但是我想确认一下大师的第一个…