1

在编写 bash 脚本时,我经常发现自己在做这样的事情:

bc <<< "64*`cat`"

或者

bc <<< "64*`dd`"

如果我想将 stdin 乘以 64。有没有更好的方法将 stdin 替换为字符串(或命令行,例如 in seq 1 2 $(cat))?

4

2 回答 2

1

假设您的平台将标准输入表示为(字符特殊)文件(这很可能),则有一种更有效的方法:/dev/stdin

$ echo 2 | bc <<< "64 * $(</dev/stdin)"
128

$ echo 5 | seq 1 2 "$(</dev/stdin)"
1
3
5

然而,虽然这避免了调用外部实用程序,例如cat,但它更加冗长

于 2016-12-09T03:30:56.873 回答
0

另一种不使用字符串扩展的解决方案:

(echo -n '64*'; cat) | bc

但是对于一个简单的乘法,您实际上不需要使用bc,您可以直接在 bash 中进行乘法:

read a
echo "$((a*64))"
于 2016-12-09T06:22:47.617 回答