在bash脚本中,我要分配一个局部变量,以便该值取决于外部的全局环境变量($MYAPP_ENV)。 if [ "$MYAPP_ENV" == "PROD" ] then SERVER_LOGIN=foobar123@prod.example.com else SERVER_LOGIN=foobar987@test.example.com fi 有没有一种较短的(到目前为止还很干净)编写上述作业的方法?(大概使用某种条件运算符/内联if。)
我注意到一些示例循环bash分散在示例中的多行中 for VARIABLE in file1 file2 file3 do command1 on $VARIABLE command2 commandN done (例如,这里 http://www.cyberciti.biz/faq/bash-for-loop/)如何在bash终端中输入换行符(我使用腻子)?当我在一行末尾按Enter键时,系统将执行它。
在bash中,使用该-x选项运行时,是否可以排除单个命令的回显? 我正在尝试使输出尽可能整洁,因此我正在使用的子外壳中运行脚本的某些部分set +x。但是,该行set +x本身仍然被回显,并且没有向输出添加任何有价值的信息。 我记得在糟糕的过去.bat,与一起运行时echo on,可以通过以开头来免除单独的行@。bash有任何等效功能吗? #!/bin/bash -x function i_know_what_this_does() { ( set +x echo do stuff ) } echo the next-next line still echoes 'set +x', is that avoidable? i_know_what_this_does echo and we are back and echoing is back on 运行以上命令时,输出为: + echo the next-next line still echoes 'set …
当我打Home,如果我的电流输入足够短(比如<36个字符),它工作正常。但是,当我键入一个较长的命令,然后又想回到开头时,它似乎已经完成了工作,但是该命令不再正确显示。好像我不是刚开始,但要离开大约10个字符。尽管如果我键入“ blindly”,它可以正常工作,但看起来像是一团糟,好像整个输入都移到了右边,但没有重绘。因此,我键入了它,但实际上没有键入,因为我要“擦除”的位置在右边“实际上”是10个字符。因此,如果我尝试擦除该命令,则仍显示前10个字符,但是如果我单击Enter它,则仅显示另一个提示,就好像先前的输入为空。 我知道这不是有史以来最好的解释,但关键是bash能够识别它并尝试做正确的事情,但经常失败。 我在tty和X会话的终端中都重现了这一点。当我按下Ctrl+时V,Home我看到了不同的序列(^[OH在X中,^[[1~在tty中),但是两者似乎都在我的体内/etc/inputrc: # do not bell on tab-completion #set bell-style none set meta-flag on set input-meta on set convert-meta off set output-meta on $if mode=emacs # for linux console and RH/Debian xterm "\e[1~": beginning-of-line "\e[4~": end-of-line "\e[5~": beginning-of-history "\e[6~": end-of-history "\e[7~": beginning-of-line "\e[3~": delete-char "\e[2~": quoted-insert "\e[5C": forward-word …