` `
,一种是$()
,使用方法如下:
variable=`commands`
variable=$(commands)
;
分隔。#!/bin/bash begin_time=`date` #开始时间,使用``替换 sleep 20s #休眠20秒 finish_time=$(date) #结束时间,使用$()替换 echo "Begin time: $begin_time" echo "Finish time: $finish_time"运行脚本,20 秒后可以看到输出结果:
%s
格式控制符可以得到当前的 UNIX 时间戳,这样就可以直接计算脚本的运行时间了。UNIX 时间戳是指从 1970 年 1 月 1 日 00:00:00 到目前为止的秒数,不了解的读者请猛击这里。
#!/bin/bash begin_time=`date +%s` #开始时间,使用``替换 sleep 20s #休眠20秒 finish_time=$(date +%s) #结束时间,使用$()替换 run_time=$((finish_time - begin_time)) #时间差 echo "begin time: $begin_time" echo "finish time: $finish_time" echo "run time: ${run_time}s"运行脚本,20 秒后可以看到输出结果:
(( ))
是 Shell 数学计算命令。和 C++、C#、Java 等编程语言不同,在 Shell 中进行数据计算不那么方便,必须使用专门的数学计算命令,(( ))
就是其中之一。更多细节我们将会在《Shell数学计算》一节中详细讲解。#!/bin/bash LSL=`ls -l` echo $LSL #不使用双引号包围 echo "--------------------------" #输出分隔符 echo "$LSL" #使用引号包围运行结果:
total 8 drwxr-xr-x. 2 root root 21 7月 1 2016 abc -rw-rw-r--. 1 mozhiyan mozhiyan 147 10月 31 10:29 demo.sh -rw-rw-r--. 1 mozhiyan mozhiyan 35 10月 31 10:20 demo.sh~ -------------------------- total 8 drwxr-xr-x. 2 root root 21 7月 1 2016 abc -rw-rw-r--. 1 mozhiyan mozhiyan 147 10月 31 10:29 demo.sh -rw-rw-r--. 1 mozhiyan mozhiyan 35 10月 31 10:20 demo.sh~所以,为了防止出现格式混乱的情况,我建议在输出变量时加上双引号。
[task.lmcjl.com]$ Fir_File_Lines=$(wc -l $(ls | sed -n '1p'))
[task.lmcjl.com]$ echo "$Fir_File_Lines"
36 anaconda-ks.cfg
本文链接:http://task.lmcjl.com/news/6940.html