shell编程基础(二)


Shell是命令解释器,是Unix/Linux系统中用户和内核交互的接口。Shell脚本是shell程序设计语言编写的程序。

一、交互式或登录(注册)shell
交互式注册(交互式登录)shell:输入用户名(/etc/passwd)、密码(/etc/shadow)成功登录系统,即调用交互式注册shell。
                                 会运行初始化文件,设置用户运行环境。
交互式非注册shell:在提示符下,输入任意shell,如ksh等,将进入交互式非注册shell。
                     会运行对应shell初始化文件,也会继承注册shell的环境。
非交互式shell:主要是运行shell脚本。
                 不执行初始化文件,但会继承注册shell环境。

交互式模式就是在终端上执行,shell等待你的输入,并且立即执行你提交的命令。
这种模式被称作交互式是因为shell与用户进行交互。
这种模式也是大多数用户非常熟悉的:登录、执行一些命令、退出。
当你退出后,shell也终止了

非交互式模式以shell script(非交互)方式执行。
在这种模式下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。
当它读到文件的结尾EOF,shell也就终止了

二、shell和shell脚本
Shell是命令解释器,是Unix/Linux系统中用户和内核交互的接口。
Shell脚本是shell程序设计语言编写的程序。是包含若干linux/unix命令的可执行程序文本文件。


bsh   /bin/sh          solaris ,AIX
ksh   /bin/ksh
csh  /bin/csh
bash /bin/bash
cat /etc/shells 查看设备所有shell
系统账号的shell使用 /sbin/nologin ,此时无法登陆系统,即使给了密码也不行。
所谓“无法登陆”指的仅是这个用户无法使用bash或其他shell来登陆系统而已,并不是说这个账号就无法使用系统资源。
举例来说,各个系统账号中,打印作业有lp这个账号管理,www服务器有apache这个账号管理,他们都可以进行系统程序的工作,但就是无法登陆主机而已。

查看当前shell:
[root@u1acatap01 configs]# echo $SHELL
/bin/bash
[root@u1acatap01 configs]#

三、编写shell脚本
[root@APROAPP shw_temp]# cat >helloworld.sh
#!/bin/bash

echo "Hello World !"

编辑脚本内容保存至.sh为后缀的文件。可以使用vi filename.sh或cat >filename.sh(以ctrl+d结束编辑,ctrl+backspace或ctrl+u删除输入的字符),也可以使用UE,Notepad或记事本等文本编辑工具编辑文件,然后上传至服务器。

四、运行shell脚本

实例echo.sh
[root@mrhcatxq01 install_cacti]# cat echo.sh
#!/bin/bash

cd
echo "hello world!"
[root@mrhcatxq01 install_cacti]# pwd
/install_cacti
[root@mrhcatxq01 install_cacti]# sh echo.sh
hello world!
[root@mrhcatxq01 install_cacti]# pwd
/install_cacti
[root@mrhcatxq01 install_cacti]# source echo.sh
hello world!
[root@mrhcatxq01 ~]# pwd
/root
[root@mrhcatxq01 ~]# cd -
/install_cacti
[root@mrhcatxq01 install_cacti]# . echo.sh
hello world!
[root@mrhcatxq01 ~]# pwd
/root
[root@mrhcatxq01 ~]# cd -
/install_cacti
[root@mrhcatxq01 install_cacti]# ./echo.sh
-bash: ./echo.sh: Permission denied
[root@mrhcatxq01 install_cacti]# chmod +x echo.sh
[root@mrhcatxq01 install_cacti]# pwd
/install_cacti
[root@mrhcatxq01 install_cacti]# ./echo.sh
hello world!
[root@mrhcatxq01 install_cacti]# pwd
/install_cacti
[root@mrhcatxq01 install_cacti]#

1.运行shell脚本的方式一般有三种
      1)使文件具有可执行权限,在脚本当前目录直接执行      ./script.sh
      2)使用解释器执行                  /bin/sh script.sh 或 sh script.sh
      3)使用source,在当前shell执行     .  script.sh 或 source script.sh

2.Shell脚本不同运行方式的区别
      1)增加可执行权限再执行脚本
        启动子进程,使用脚本中指定的shell执行脚本如:#!/bin/sh;若脚本未指定#!/bin/sh,会使用默认shell执行脚本

      2)使用shell执行脚本
        启动子进程,使用直接指定的shell执行脚本,而不管脚本里面是否执行解释器,如 sh  script.sh

      3).(空格)脚本或 source 脚本
        当前shell默认的shell解释器执行脚本,不创建子进程

3.第一行指定解释器路径,如#!/bin/bash

转载于:https://my.oschina.net/shw23/blog/688293

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值