官术网_书友最值得收藏!

  • Bash Cookbook
  • Ron Brash Ganesh Naik
  • 374字
  • 2021-07-23 19:17:35

Getting ready

This recipe is going to take into account a few interesting things:

  • Bash can't do everything well
  • Other utilities exist (for example, bc)
  • We can create our own in another language like C
  • Creating a tarball
Sometimes, on small embedded systems, Python might not be available, but Bash (or a close relative) and C are. This is where being able to perform math without extra programs (that may not be available) can come in handy!

We will use the following command to make sure that we have all of the utilities installed for this experiment:

$ sudo apt-get install -y bc tar

Now, we need to create a tarball called archive.tar.gz:

$ dd if=/dev/zero of=empty.bin bs=1k count=10000
$ tar
-zcvf archive.tar.gz empty.bin
$ rm empty.bin

We realize that the purpose of creating/compiling a simple program that is not written in Bash may be beyond the scope of this book, but it can be a helpful skill. To do this, we will need to install GCC, which is short for the GNU Compiler Collection. This sounds terribly complex and we assure you that we did all the hard work:

$ sudo apt-get install -y gcc

The preceding command installs the compiler, and now we need the C source code (in order to compile a simple C program). Open up a console and retrieve the code using:

$ wget https://raw.githubusercontent.com/PacktPublishing/Bash-Cookbook/master/chapter%2002/mhelper.c
This code is also available on Github at https://github.com/PacktPublishing/Bash-Cookbook

To compile the code, we will use gcc and -lm (this refers to libmath) as follows:

$ gcc -Wall -02 -o mhelper main.c -lmath

If the compiler completes successfully (which it should), you will be left with a utility binary called mhelper (or math helper). We can also add this to our list of local commands by copying it to /bin using sudo and cp:

$ sudo cp mhelper /bin; sudo chmod a+x /bin/mhelper;

Now, mhelper can be used for basic operations such as division, multiplication, addition, and subtraction:

$ mhelper "var1" "-" "var2"
The mhelper code is not designed to be particularly robust and to handle specific edge cases, but rather to demonstrate that another utility can be used. Python and numpy would be an excellent alternatives!
主站蜘蛛池模板: 陆河县| 阳春市| 建平县| 弥渡县| 道真| 澜沧| 宜兰市| 来凤县| 南宁市| 天台县| 苏州市| 任丘市| 竹北市| 松滋市| 通州区| 德庆县| 南皮县| 林周县| 阳高县| 喜德县| 通山县| 扬州市| 英超| 通许县| 高邑县| 高邮市| 来凤县| 罗平县| 鸡泽县| 扎兰屯市| 宣威市| 宜君县| 杭锦旗| 资溪县| 潞西市| 育儿| 图木舒克市| 孟连| 台中县| 乌兰县| 富蕴县|