shell編程基礎(二)


Shell是命令解釋器,是Unix/Linux系統中用戶和內核交互的接口。Shell腳本是shell程序設計語言編寫的程序。linux

1、交互式或登陸(註冊)shell
交互式註冊(交互式登陸)shell:輸入用戶名(/etc/passwd)、密碼(/etc/shadow)成功登陸系統,即調用交互式註冊shell。
                                 會運行初始化文件,設置用戶運行環境。
交互式非註冊shell:在提示符下,輸入任意shell,如ksh等,將進入交互式非註冊shell。
                     會運行對應shell初始化文件,也會繼承註冊shell的環境。
非交互式shell:主要是運行shell腳本。
                 不執行初始化文件,但會繼承註冊shell環境。shell

交互式模式就是在終端上執行,shell等待你的輸入,而且當即執行你提交的命令。
這種模式被稱做交互式是由於shell與用戶進行交互。
這種模式也是大多數用戶很是熟悉的:登陸、執行一些命令、退出。
當你退出後,shell也終止了apache

非交互式模式以shell script(非交互)方式執行。
在這種模式下,shell不與你進行交互,而是讀取存放在文件中的命令,而且執行它們。
當它讀到文件的結尾EOF,shell也就終止了bash

2、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]#spa

3、編寫shell腳本
[root@APROAPP shw_temp]# cat >helloworld.sh
#!/bin/bash設計

echo "Hello World !"unix

編輯腳本內容保存至.sh爲後綴的文件。能夠使用vi filename.sh或cat >filename.sh(以ctrl+d結束編輯,ctrl+backspace或ctrl+u刪除輸入的字符),也能夠使用UE,Notepad或記事本等文本編輯工具編輯文件,而後上傳至服務器。繼承

4、運行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

相關文章
相關標籤/搜索