本文最后更新于:2024年5月4日 凌晨
1、方法一
使用awk
和xargs
来实现参数传递:这种方法需要xargs
支持-I
参数,不支持的情况下执行结果不会替换掉{}
。
1
| ps aux | grep <your_process_name> | awk '{print $2}' | xargs -I {} echo "Process ID: {}"
|
这里,-I {}
选项告诉 xargs
在每次执行 echo
命令时用找到的进程ID替换 {}
通过xargs --help
来判断是否支持-I参数,我这里不支持-I
参数,考虑其他方法:

2、方法二
使用管道和循环来替代xargs
以达到相同的执行效果,示例:
1
| ps aux | grep <your_process_name> | awk '{print $2}' | while read pid; do echo "Process ID: $pid"; done
|
这个命令会逐行读取 awk
命令输出的进程ID,并把它传递给 echo
命令以生成所需的输出。
执行结果示例:
1 2 3
| # ps -ef | grep com.ghtc.ghtlog | awk '{print $2}' | while read pid; do echo "Process ID: $pid"; done Process ID: 3588 Process ID: 30941
|
3、用法拓展
通过上述的方法,可以有很多种使用技巧,如将前一个指令执行的结果进行换算处理。
1 2
| cat /sys/kernel/debug/clk/measure_only_mccc_clk/clk_measure >>> 1555209953
|
1 2
| # 输出结果为Byte,按单位换算为MB: echo "scale=2; 1555209953 / 1024 / 1024" | bc
|
通过awk
和循环控制语句来实现。
1
| cat /sys/kernel/debug/clk/measure_only_mccc_clk/clk_measure | awk '{print $1}' | while read result; do echo "scale=2; $result / 1024 / 1024" | bc;done
|
执行结果:
1
| cat /sys/kernel/debug/clk/measure_only_mccc_clk/clk_measure | awk '{print $1}' | while read result; do echo "$(echo "scale=2; $result / 1024 / 1024" | bc) MB"; done
|
执行结果:
Byte转换成GB:
1
| cat /sys/kernel/debug/clk/measure_only_mccc_clk/clk_measure | awk '{print $1}' | while read result; do echo "$(echo "scale=2; $result / 1024 / 1024 /1024" | bc) GB"; done
|
执行结果:
其他的使用技巧,简化执行的步骤,尽情的发挥想象吧。
4、命令拓展——bc:数字计算器
bc
指令,全称为binary calculator,译为二进制计算器,主要用来进行浮点数的计算。在bash中,仅支持整数的运算,不支持浮点数的运算,通过bc指令来实现对浮点数的运算。
4.1、bc参数介绍
bc --help
可以查看支持哪些参数:

1 2 3 4 5 6 7 8 9 10 11
| -i --interactive 强制进入交互模式 -l --mathlib 使用预定义的数学函数: s(expr) = 表示 expr 弧度的正弦值 c(expr) = 表示 expr 弧度的余弦值 a(expr) = 表示 expr 的反正切值(返回弧度) l(expr) = 表示 expr 的自然对数 e(expr) = 对 expr 进行 e 的幂运算 j(n, x) = x 的整数阶贝塞尔函数 n -q --quiet 不打印版本和版权信息 -s --standard 如果使用了任何非 POSIX 扩展,则报错 -w --warn 如果使用了任何非 POSIX 扩展,则警告
|
4.2、交互模式运算
正常执行bc
指令或bc -i
会进入一个交互模式,相当于进入了计算器的输入界面:

在交互模式下可以执行各类运算操作(加减乘除等):

输入quit
退出交互模式。
4.3、作为计算工具,处理数据
通过echo
和bc
组合使用,将输出的结果作为计算参数来使用,如:
1 2 3 4 5 6
| # 除运算 echo 100 / 5 | bc >>> 20 # 求算术平方根 echo 9 | bc -lq | awk '{print sqrt($1)}' >>> 3
|
4.4、设置小数点规模
1 2 3 4 5
| bc # 设置2位小数点 scale=2 9/3 >>> 3.00
|

1 2 3
| # 设置3位小数点 echo "scale=3; 9 / 3" | bc >>> 3.000
|