在编写 bash 脚本时,我经常发现自己在做这样的事情:
bc <<< "64*`cat`"
或者
bc <<< "64*`dd`"
如果我想将 stdin 乘以 64。有没有更好的方法将 stdin 替换为字符串(或命令行,例如 in seq 1 2 $(cat)
)?
在编写 bash 脚本时,我经常发现自己在做这样的事情:
bc <<< "64*`cat`"
或者
bc <<< "64*`dd`"
如果我想将 stdin 乘以 64。有没有更好的方法将 stdin 替换为字符串(或命令行,例如 in seq 1 2 $(cat)
)?
假设您的平台将标准输入表示为(字符特殊)文件(这很可能),则有一种更有效的方法:/dev/stdin
$ echo 2 | bc <<< "64 * $(</dev/stdin)"
128
$ echo 5 | seq 1 2 "$(</dev/stdin)"
1
3
5
然而,虽然这避免了调用外部实用程序,例如cat
,但它更加冗长。
另一种不使用字符串扩展的解决方案:
(echo -n '64*'; cat) | bc
但是对于一个简单的乘法,您实际上不需要使用bc
,您可以直接在 bash 中进行乘法:
read a
echo "$((a*64))"