如何从shell脚本创建二进制文件


本文摘自PHP中文网,作者不言,侵删。

在使用Linux系统时,我们都会使用许多命令。大多数命令以二进制格式在/bin、/sbin、/usr/bin、/usr/sbin等目录中可用。作为系统管理员,我们编写了许多shell脚本来完成一些任务或使它们自动化。

本文将介绍创建shell脚本的二进制文件,因为没有人可以看到脚本的源代码,我们可以将它们用作命令。要从脚本创建二进制文件,我们使用SHC编译器。

请按照以下步骤执行此操作。

步骤1:先决条件

首先,需要为SHC编译器安装所需的包。

对于Ubuntu,Debian和LinuxMint

1

$ sudo apt-get install libc6-dev

对于CentOS,RHEL和Fedora

1

$ sudo yum install glibc-devel

步骤2:下载并安装SHC

从SHC编译器的官方网页或使用以下命令下载最新的源代码,并在您的系统上提取。

1

2

3

$ cd / usr / src

$ wget http://www.datsi.fi.upm.es/~frosal/sources/shc-3.8.9.tgz

$ sudo tar xzf shc-3.8.9.tgz

现在编译系统上的SHC源代码并使用以下命令安装它。

1

2

3

$ cd shc-3.8.9

$ make

$ make install

步骤3:创建shell脚本

让我们根据需求创建一个shell脚本,或者跳过这个步骤(如果已经创建了)。对于本文,我们已经创建了下面的示例脚本,它添加了命令行参数上给定的整数值,并显示了它们的总和。

1

vim script.sh

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

#!/bin/bash

 

total=0

 

for i in $@; do

   if [ ! -z "${i##[0-9]*}" ]; then

    echo "Please enter numeric only"

    exit 1

   fi

   total=$(($total + $i))

done

 

if [ $total -eq 0 ]; then

    echo "Plesae execute script like: $0 10 20 30"

    exit 0

fi

 

echo $total

步骤4:创建脚本的二进制文件

在这个阶段,我们已经安装了SHC编译器,并有一个名为script.sh的shell脚本。使用下面的命令创建脚本的二进制文件。

1

$ shc -T -f script.sh

上面的命令将在当前目录中创建两个文件。其中一个是script.sh.x.c,它是脚本中的C语言格式。第二个是script.sh.x,它将采用二进制格式。

步骤5:测试二进制脚本

如果试图打开二进制格式的脚本,将看到它不是可读的格式。

现在将该脚本移到/usr/bin目录下,以便在系统中的任何位置使用。同时从文件名中删除.sh.x。因此,它将以简单的名称实现。同时为所有人设置执行权限

1

2

$ mv script.sh.x / usr / bin / script

$ chmod + x / usr / bin / script

现在从系统中的任何位置输入命令'script'。将看到与shell脚本相同的结果。

1

2

$ script 10 20 30

60

本篇文章到这里就已经全部结束了,更多其他精彩内容可以关注PHP中文网的Linux教程视频栏目!

以上就是如何从shell脚本创建二进制文件的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

linux终端执行shell脚本时提示权限不足

如何在shell脚本中以隐藏字符的形式输入密码

如何在shell脚本中使用逻辑或&和

shell脚本高级编程的详细讲解

freeworld.posterous.com linux bash shell cheat sheet----autho:raphael

linux中如何运行shell程序

shell--标准输入输出(read&echo)

adb shell是什么意思

shell--标准输入输出(read&echo)

有关linux中shell内置判断语句的介绍

更多相关阅读请进入《shell》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...