下面是小编整理的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
- 影视广告分镜头脚本2024-07-06
- Shell常用操作符总结2023-03-07
- 壳牌Shell笔试经验谈2022-12-19
- 服装宣传片脚本范文2022-12-12
- 大学宣传片脚本范文2023-01-28
- Shell Company 笔试考题目2025-01-27
- 人性化的盗cookie脚本脚本安全2025-04-23
- iShowMusic V1.2 直接写shell漏洞2024-02-15
- HOW TO GET PHPCMS WEBSHELL脚本安全2024-04-06
- 用PHP 4.2书写安全的脚本PHP2023-04-10