shell脚本学习

时间:2022年12月11日

/

来源:CruelSummer

/

编辑:本站小编

收藏本文

下载本文

下面是小编整理的shell脚本学习,本文共5篇,欢迎您阅读,希望对您有所帮助。本文原稿由网友“CruelSummer”提供。

篇1:shell脚本学习

1111111111111清除/var/log下messages日志文件的简单命令脚本

/var/log/下日志文件时系统文件,必须有root权限:

$UID是系统的全局变量:

make && make install 表示前面成功了,执行后面的

make || make install 表示前面不成功,执行后面的

清空日志的三种方法:适合保留文件,清空内容的场合

①echo “ ”>test.log或echo >test.log

②>test.log

③cat /dev/null >test.log

22222222222:shell脚本的基础知识

shell是弱类型语言:(语法宽松,不严格)较为通用

通用的shell有标准的Bourne shll(sh)和c shell(csh)其中Bourne shell(sh)已经被bash shell取代

shell脚本的建立:

tac /etc/init.d/nfs 将文件倒着显示

相当于:head -1 /etc/init.d/nfs

①脚本开头

一个规范的shell脚本的第一行会指出由哪个程序(解释器)来执行脚本中的内容,在

333333333333linux bash 编程中一般为:

①解释器

#!/bin/bash

#!/bin/sh

②在linux下sh 相当于bash,

#!又称幻数,在执行bash脚本的时候,内核会根据它来确定用哪个程序来解释脚本中的内容

,这一行必须在脚本顶端的第一行,如果不是第一行,则为注释

Centos.和RedHat linux下默认的shell均为bash

④如果脚本的开头不指定解释器,那么,就要用对应的解释器来执行脚本

脚本注释

#号

444444444444444shell脚本的执行

shell脚本的执行

当shell脚本以非交互的方式运行时,它会先查找环境变量ENV,该变量指定了一个,环境文件(通常是.bashrc),然后从改环境变量文件开始执行,当读取了ENV文件后,SHELL才开始执行shell脚本中的内容,

shell脚本学习

Shell脚本的执行通常可以采用以下三种方式:

①bash script-name或 sh script-name(推荐使用)

②path/script-name或./script-name(当前路径下执行脚本)

③source script-name或. script-name# 注意点号

第一种方法是当脚本文件本身没有可执行权限(即文件X位为-号)时常使用的方法,这里推荐用bash执行,或者文件开头没有指定解释器,

第二种方法需要先将脚本文件的权限改为可执行(即文件加X位),具体方法:chmod u+x

script-name 或者chmod 755 script-name然后通过脚本路径,就可以直接执行脚本了

第三种方法通常是使用source或者“.” 号读入或加载指定的shell脚本文件语句,,然后,依次执行指定shell脚本文件san.sh中的所有。语句将作为当前父shell脚本father.sh进程的一部分运行,因此,使用source或者“.”点号等的可以将san.sh自身脚本中的变量的值,或者函数等的返回值传递到当前的父shell脚本father.sh中使用,这是第三种方法和前两种方法的最大区别

通过source 或“.” 点号加载执行过的脚本,在脚本结束后脚本中的变量(包括函数)值,在当前shell中依然存在,而sh和bash则不行,因此,在做shell脚本开发时。如果脚本中有需求引用其他脚本的内容,或者配置文件时,做好用“.” 点号或者source在脚本开头加载改脚本或配置文件,然后在下面的内容用可以调用source加载的脚本及文件中的变量及函数等内容。

笔试题:

已知如下命令及返回结果,请问echo $user的返回的结果为

[oldboy@test~]cat test.sh

[oldboy@test~]user=`whoami`

[oldboy@test~]sh test.sh

篇2:shell脚本学习笔记简介及基本格式

shell简介

shell英文原意是壳,贝壳的意思,在linux,unix系统中的shell是一个接受用户指令的的命令行界面。当shell执行程序时,它会请求内核启动新的进程,在该进程里执行当前序,具体的实现是shell调用fork函数产生新进程,在新进程里调用exec函数加载指定程序。shell可以执行二进制可执行文件(elf文件),或者是脚本文件(具备可执行权限)。 对于脚本文件的处理,shell会启动一个新的shell来处理。

shell脚本基本格式

因为shell的实现由很多种,linux常用的默认的shell是bash,但还有很多其他shell,如b shell, c shell等。所以我们在编写shell脚本的时候需要一种机制能搞告知内核,我们需要用到哪种shell来执行我们的脚本,

shell脚本使用脚本里的第一行来标识具体使用哪种shell。

[html]

#! /bin/bash

所有的shell脚本都以上面一行作为开始。脚本以#!作为开始,后面跟的是解释器的完整路径,路径后面还可以跟着参数,内核会根据相应的参数调用解释器。  我们编写一个简单地脚本程序nusers.sh,该脚本显示出当前登录系统的用户数量。

[html]

#! /bin/bash

who | wc -l

who命令会打印当前登录的用户的相关信息,通过管道 | 将结果传送给wc程序处理,wc -l 会打印出who命令输出信息的行数(who命令会将每个用户的信息用一行来显示)也就是用户的数量。

篇3:shell脚本排序(冒泡排序)

#/bin/basha=(9 84 51 0 345 1 2 34 1 0) #自己定义一个数组temp=for((i=0;i<10;i++)){ for((j=i;j<10;j++)) { x=${a[$i]} if test $x -ge ${a[$j]} then temp=${a[$i]} a[$i]=${a[$j]} a[$j]=$temp fi }}for((k=0;k<10;k++)){ echo -n ${a[$k]} “ ”}echo

上面以自定义固定数组进行排序,下面是用户自定义输入数组进行排序,

shell脚本排序(冒泡排序)

#/bin/basha=`expr $# + 1`#expr是一个计算操作,$#是参数个数,$#+1是因为$0没有存储参数.temp=for((i=1;i<$a;i++)){ b[$i]=$1 shift 1 }for((i=1;i<$a;i++)){ for((j=i;j<$a;j++)) { x=${b[$i]} if test $x -ge ${b[$j]} then temp=${b[$i]} b[i]=${b[$j]} b[j]=$temp #相当与冒泡排序 fi }}for((k=1;k<$a;k++)){ echo -n ${b[$k]} “ ” #不换行显示}echo~$./a.out 7 6 56 4 3

~$3 4 6 7 56

篇4:shell脚本加密脚本安全

第一种方法(gzexe):

这种加密方式不是非常保险的方法,但是能够满足一般的加密用途,可以隐蔽脚本中的密码等信息,

它是使用系统自带的gzexe程序,它不但加密,同时压缩文件。

使用方法:

gzexe file.sh

它会把原来没有加密的文件备份为 file.sh~ ,同时 file.sh 即被变成加密文件;

第二种方法(shc):

使用 shc 对 Linux shell 脚本加密.

shc是一个专业的加密shell脚本的工具.它的作用是把shell脚本转换为一个可执行的二进制文件,这个办法很好的解决了脚本中含有IP、密码等不希望公开的问题.

shc的下载地址:

点击下载

安装:

tar xzvf shc-3.8.6.tgz

cd shc-3.8.6

mkdir -p /usr/local/man/man1

这步是必须的,不然安装过程中会报错,shc将安装命令到/usr/local/bin/目录下;将帮助文档存放在/usr/local/man/man1/目录下,如果系统中无此目录,安装时会报错,可创建此目录后再执行安装

make install

这是要回答yes或者y,不能直接回车,否则会报错

使用方法:

“-f”选项指定需要加密的程序

shc -r -f script-name

运行后会生成两个文件,script-name.x 和 script-name.x.c. 其中script-name.x是加密后的可执行的二进制文件;用./script-name即可运行,script-name.x.c是生成script-name.x的原文件(c语言).

另shc还提供了一种设定有效执行期限的方法,可以首先使用shc将shell程序转化为二进制,并加上过期时间,如:

# shc -e 18/10/ -m “ It’s too late to run this script. ” -f script.s

篇5:Shell脚本排序算法(冒泡排序)

#/bin/basha=(9 84 51 0 345 1 2 34 1 0) #自己定义一个数组temp=for((i=0;i<10;i++)){ for((j=i;j<10;j++)) { x=${a[$i]} if test $x -ge ${a[$j]} then temp=${a[$i]} a[$i]=${a[$j]} a[$j]=$temp fi }}for((k=0;k<10;k++)){ echo -n ${a[$k]} “ ”}echo

上面写的数组是事前在代码里定义好的数组排序,下面的是用户在执行过程中自定义的数组排序,

Shell脚本排序算法(冒泡排序)

#/bin/basha=`expr $# + 1`#expr是一个计算操作,$#是参数个数,$#+1是因为$0没有存储参数.temp=for((i=1;i<$a;i++)){ b[$i]=$1 shift 1 }for((i=1;i<$a;i++)){ for((j=i;j<$a;j++)) { x=${b[$i]} if test $x -ge ${b[$j]} then temp=${b[$i]} b[i]=${b[$j]} b[j]=$temp #相当与冒泡排序 fi }}for((k=1;k<$a;k++)){ echo -n ${b[$k]} “ ” #不换行显示}echo$: ./liu.sh 8 7 6 4 100 7

$: 4 6 7 7 8 100

Shell脚本实现ftok函数

监控Oracle数据库的常用shell脚本数据库

Shell脚本中判断变量为数字的3种方法

脚本范文

SHELL病毒简介

下载shell脚本学习(共5篇)
shell脚本学习.doc
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档
点击下载本文文档