小编meu*_*euh的帖子

在 bash 函数(不是命令)上使用时间

如何从bash 文件内部测量对 bash 函数的单个调用。

我有一个使用命令调用的程序

eclipse -b col_solve.pl -e "myPred"
Run Code Online (Sandbox Code Playgroud)

这个调用输出一些信息,最后一个是 SUCCESS 或 FAIL。我正在编写一个脚本,该脚本在目录中的一堆文件上调用,对于这些文件中的每一个,输出

  • 名字
  • 状态(成功或失败)
  • 以及执行所需的(用户)时间。

这是我知道有效的代码:

我用它来获取状态(检索输出中的最后一个单词):

stat=
get_stat ( ){
    stat=$(awk '{print $NF}' <<< $1);
}
Run Code Online (Sandbox Code Playgroud)

我用它来调用程序:

run_eclipse_on ( ){
    get_stat "$(eclipse -b col_solve.pl -e "run(\"$1\")" )";
}
Run Code Online (Sandbox Code Playgroud)

有问题的代码如下:

for i in `ls $1` ;  #where $1 is the directory containing the files
do
    tps=$(/usr/bin/time -f %U      \ #to get just the user time
         [run_eclipse_on $1/$i] ); # HERE it is! 
    echo $i::$stat::::$tps;  # gives, …
Run Code Online (Sandbox Code Playgroud)

shell-script function time

7
推荐指数
1
解决办法
1万
查看次数

bash中的双变量替换

程序片段:

BASH_MIN_REQ="2.05"
BINUTILS_MIN_REQ="2.12"
BISON_MIN_REQ="1.875"

BASH_CURR=$(bash --version | head -n1 | cut -d"(" -f1 | cut -d" " -f4)
BINUTILS_CURR=$(ld --version | head -n1 | cut -d" " -f7)
BISON_CURR=$(bison --version | head -n1 | cut -d" " -f4)

list=(BASH BINUTILS BISON)

for progs in ${list[@]}; do
    echo "$progs: ${${progs}_MIN_REQ}:${${progs}_CURR}"
done
Run Code Online (Sandbox Code Playgroud)

预期输出:

BASH: 2.05:4.3.11
BINUTILS: 2.12:2.24
BISON: 1.875:3.0.2
Run Code Online (Sandbox Code Playgroud)

注意用值初始化的变量。我想${progs}_MIN_REQ$BASH_MIN_REQ它初始化的值 2.05替换然后再次替换。并在for循环内执行此操作,以便我编写代码更容易,因为我只需要编写 1 条echo语句而不是 3 条语句。

实际输出:

bad substitution
Run Code Online (Sandbox Code Playgroud)

我知道我写的echowrong. 但是有没有办法双重替换变量。否则我将不得不写很多 …

bash variable-substitution

4
推荐指数
1
解决办法
2275
查看次数

当 bash 询问“y / n”时,自动执行 gdebi

我正在尝试在 bash 脚本中自动安装 Adob​​e。

  1. 该脚本下载 package.deb
  2. 当我安装它时,它会询问我是/否。这就是我想要自动化的,到目前为止我没有成功,用户总是必须输入选项,这就是我不想要的。
wget  --user xx@xxx --password xxx* ftp://www.xxx.com/drivers/adobe/AdbeRdr9.5.5-1_i386linux_enu.deb -S 
gdebi AdbeRdr9.5.5-1_i386linux_enu.deb <<< 'yes'
Run Code Online (Sandbox Code Playgroud)

这是行不通的。

ubuntu shell-script

1
推荐指数
1
解决办法
2351
查看次数