我想将脚本的“运行时间”分配给变量“realtime”。所以,我想如下:如何将流水线结果分配给Bash中的变量
realtime = `{ time (echo "mirror -Rv $LocalPath $LocalPath";echo "quit";)|lftp -u s1238262 FTPS://$RemoteHost ; } 2>&1 |grep "real"| awk '{print $2}'`
echo $realtime
但我得到了一个错误:
++ grep real
++ awk '{print $2}'
+ realtime = 0m2.403s
./test.sh: line 6: realtime: command not found
+ echo
我试图
realtime = `{ time pwd; } 2>&1 |grep real|awk '{print $2}'`
它做的工作。但是ftp脚本没有。谁能帮我?
除非在交互式会话中定义了名为'realtime'的函数或别名,否则''realtime = ...'调用不起作用。 'bash'中的变量赋值要求在变量名和'='符号之间,或者在符号之后和值之前没有空格(例如'realtime = something'好,'realtime = something'' ,'realtime = something'和'realtime = something'都不好)。 – twalberg
另外'grep foo | awk'{bar}''通常写得更好'awk'/ foo/{bar}''。 – tripleee
非常感谢!但关于awk的重写,我没有明白。我把它写成''realtime ='{time pwd; } 2>&1 | awk'/ grep“real”/ {print $ 2}''''。但它运行错误: '++ awk'/ grep“real”/ {print $ 2}'' '+ a =' – dmoney