Questions tagged «bash»

与其他Bourne / POSIX shell相对,GNU的Bourne Again SHell特有的问题。对于一般关于Unix shell的问题,请改用/ shell标记。

3
从bash脚本自动化文本输入而无需使用EOF
我正在运行Ubuntu Linux。假设有一个名为的程序myprogram。该程序提示用户输入;特别是,用户必须在出现提示时键入一个整数,然后按Enter。我想使用bash脚本自动执行此过程。特别是,我想执行myprogram100次(使用i从1到的计数器100)。在每次执行时myprogram,我想i在出现提示时输入的当前值。 (顺便说一句,使用myprogramoptions / switches -options,它们都是常量,因此在bash脚本中指定。) 此bash脚本的不完整骨架可能是: #!/bin/bash for i in {1..100} do myprogram -options done 现在,我想修改上面的代码,以便i在程序提示时输入的当前值。做这个的最好方式是什么? 我正在使用的软件的网站建议<<EOF在行尾使用myprogram -options。我认为这告诉bash查看输入的“文件结尾”。但是,如果我不想要的东西放置在输入的结束文件?如果要在<<或之后立即放置<怎么办? 原因是事情会变得更加复杂。例如,我可能会引入一个j以某种非线性,非顺序方式改变的整数计数器。然后,我想在每次迭代中提供jto 的当前值myprogram,但是to 的值j可能在to的调用myprogram -options与文件的结尾之间变化EOF。 你有什么建议吗?

5
有在线bash脚本测试网站吗?
有时我需要帮助朋友使用bash脚本。当我在Windows计算机上时,它是一个工作环境,我不能只安装Cygwin或使用VM。 我是否可以使用一些免费的脚本网站,最好是可以使用Putty进行连接的网站或类似网站?
10 bash 

4
在UNIX中删除超过5天的文件(文件名中的日期,而不是时间戳)
我想从目录中删除超过5天的日志文件。但是删除不应该基于文件的时间戳。它应该基于文件名。对于今天的例子日期是07月05日和目录包含类似名称的10个文件ABC_20120430.log,ABC_20120429.log,ABC_20120502.log,ABC_20120320.log等我希望能够通过提取从文件的名称日期以删除这些文件。
10 bash  sed  rm 

4
在命令行中从尾部执行文本的最简单方法是什么?
有时我正在使用新的(ubuntu)框,然后键入git并收到警告: The program 'git' is currently not installed. You can install it by typing: apt-get install git-core 如果发生这种情况,我知道我可以通过执行以下操作来抓住最后一行: !! 2>&1 | tail -n 1 但是,如何apt-get install git-core最轻松地执行()结果? 我知道我能做 `!! 2>&1 | tail -n 1` 但是还有一种方法可以实际通过管道传输并运行它吗?这似乎不起作用: !! 2>&1 | tail -n 1 | sh 而且该2>&1部分有点麻烦,所以我想知道是否还有一种更简单的方法可以实现这一目标。 编辑 将其以某种方式保存到变量,然后执行该变量也是可以接受的: !! 2>&1 | tail …

4
让Bash脚本等待状态消息再继续
我正在使用bash脚本启动Selenium服务器,正如您从下面的日志中的时间戳中看到的那样,事情完全在线大约需要32秒: Feb 28, 2012 10:19:02 PM org.openqa.grid.selenium.GridLauncher main INFO: Launching a standalone server 22:19:02.835 INFO - Java: Sun Microsystems Inc. 20.0-b11 22:19:02.836 INFO - OS: Linux 2.6.32-220.4.1.el6.x86_64 amd64 22:19:02.852 INFO - v2.19.0, with Core v2.19.0. Built from revision 15849 22:19:02.988 INFO - RemoteWebDriver instances should connect to: http://127.0.0.1:4444/wd/hub 22:19:02.990 INFO …
10 bash  logs  pipe  search  selenium 


2
通过“如果”将任务发送到后台
为什么是这样? if true; then sleep 3 &; fi bash: syntax error near unexpected token `;' 我要跑步 sleep 3 在后台运行,以便命令[“ sleep 3”仅作为示例]将以“ paralell”样式运行,因此完成速度更快。但是我得到这个: bash: syntax error near unexpected token `;' 错误信息。为什么?为什么我不能将任务发送到后台?



3
如何执行来自grep结果的行?
我有一个带有某些安装说明的文本文件,并且我知道我可以grep表示文件中的唯一位置。例如,文本文件具有以下内容: MYDIR =`找到/ home / user -name somedir` 出口PERL5LIB = $ PERL5LIB:$ MYDIR 在bash中,如何在文件中的grep之后执行行?就像是: 从“ grep somedir INSTALLFILE”执行结果 执行“ grep'export PERL5LIB'INSTALLFILE”的结果
10 bash  grep 

2
将默认数组写入Bash中的变量
我期待 excludes="${excludes:-( ${default_excludes[@]} )}" 如果$excludes为空,则为数组。不幸的是,后面的东西:-被认为是字符串。我是否错过了一些语法扭曲,还是不得不使用笨拙的 if [ -z "${excludes:-}" ] then excludes=( "${default_excludes[@]}" ) fi ?
10 bash  array 

5
在Bash中使用su运行多个命令
我想用su -c根命令同时运行多个命令。我不想为此使用额外的脚本。 我尝试了以下方法: su root -c "tcpdump -i wlan0 -s 1500 -w CCCCCC & " -c "ls -lh" 但它只执行ls第一个。 我尝试了以下方法: su root -c "tcpdump -i wlan0 -s 1500 -w CCCCCC & ; ls -lh;" 但它说分号有误;。 你知道怎么做吗?
10 bash  su 

5
从脚本中找到绝对路径
在脚本中,我进入$0了可能的相对路径。为了将其转换为绝对值,我发现了我不理解的解决方案: abspath=$(cd ${0%/*} && echo $PWD/${0##*/}) 我的问题是内部的魔法${0%/*}和${0##*/}。看起来前者提取目录名,而后者提取文件名,我只是不知道如何。
10 bash  path 

3
最佳做法是使用$?猛击?
当我阅读有关$的答案时?另一个问题浮现在脑海。 是否有使用$的最佳做法?猛击? 让我们举个例子: 我们有一个线性脚本,我想知道所有命令都已正确执行。您是否认为可以调用一个小函数(将其称为“ did_it_work”)以检查错误代码,如果不是,则将其中断。 #!/bin/bash function did_it_work { code=$1 if [ "$code" -ne "0" ] then echo "Error failure: code $code " exit 1 fi } dir=some/path mkdir -p $dir did_it_work $? cd $dir did_it_work $? run_some_command did_it_work $? 当然,这种方法意味着我必须手动解决问题(如果有)并重新运行脚本。 您认为这是个好主意还是有其他最佳做法呢? /谢谢

4
如何检查压缩文件是否为空?
有没有一种快速的方法来检查压缩文件是否为空,还是必须先将其解压缩? 例: $ touch foo $ if [ -s foo ]; then echo not empty; fi $ gzip foo $ if [ -s foo.gz ]; then echo not empty; fi not empty $ wc -l foo.gz 1 foo.gz

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.