当使用bash脚本时,我经常发现自己在做这样的事情:
bc <<< "64*`cat`"
或
bc <<< "64*`dd`"
如果我想将stdin乘以64.有没有更好的方法将stdin替换为字符串(或命令行,例如在seq 1 2 $(cat)
中)?
答案 0 :(得分:1)
/dev/stdin
(这很有可能),那么有一种更有效的方式来做这件事:
$ echo 2 | bc <<< "64 * $(</dev/stdin)"
128
$ echo 5 | seq 1 2 "$(</dev/stdin)"
1
3
5
但是,虽然这样可以避免调用cat
等外部实用程序,但更详细。
答案 1 :(得分:0)
另一种不使用字符串扩展的解决方案:
(echo -n '64*'; cat) | bc
但是对于简单的乘法,你实际上不需要使用bc
,你可以直接乘以bash:
read a
echo "$((a*64))"