shell 指令碼的基本定義

2022-04-25 14:09:25 字數 2480 閱讀 9901

注意不能有控制,指令之間

shell指令碼的基礎知識

(1)shell指令碼的本質

編譯型語言

解釋型語言

shell指令碼語言是解釋型語言

shell指令碼的本質

shell命令的有序集合

(2)shell 程式設計的基本過程

基本過程分為三步:

step1. 建立 shell 檔案

包含任意多行作業系統命令或shell命令的文字檔案;

step2. 賦予shell檔案執行許可權

用chmod命令修改許可權;

step3. 執行shell檔案

直接在命令列上呼叫shell程式.

(3)例項

step1: 建立shell檔案 (可用任何建立文字檔案的方法)

$ cat prog1.sh

date

step2: 賦予執行許可權: (初始文字檔案無執行許可權)

$ chmod 740 prog1.sh

step3: 執行該shell程式

$ prog1.sh

prog1.sh: not found

(shell在標準搜尋路徑中找不到prog1.sh)

step4: 指定路徑或修改環境變數path後執行shell程式

$ ./prog1.sh

2023年 12月 16日 星期二 14:52:57 cst

變數是用$來定義,注意不能有空格

shell變數

(1)shell變數

shell允許使用者建立變數儲存資料,但不支援資料型別(整型、字元、浮點型),

將任何賦給變數的值都解釋為一串字元

variable=value

a. count=1

b. echo $count

c. date=`date`

d. echo $date

(2) bourne shell有如下四種變數:

1) 使用者自定義變數

2) 位置變數即命令列引數

3) 預定義變數

4) 環境變數

(3) 使用者自定義變數

1) 在shell程式設計中通常使用全大寫變數,方便識別

$ count=1

2) 變數的呼叫:在變數前加$

$ echo $home

3) linux shell/bash從右向左賦值

$y=y

$ x=$y

$ echo $x

y 4) 使用unset命令刪除變數的賦值

$ z=hello

$ echo $z

hello

$ unset z

$ echo $z

(4) 位置變數

$0 與鍵入的命令列一樣,包含指令碼檔名

$1,$2,……$9 分別包含第乙個到第九個命令列引數

$# 包含命令列引數的個數

$@ 包含所有命令列引數:「$1,$2,……$9」

$? 包含前乙個命令的退出狀態

$* 包含所有命令列引數:「$1,$2,……$9」

$$ 包含正在執行程序的id號

(5) 常用shell環境變數

home: /etc/passwd檔案中列出的使用者主目錄

ifs:internal field separator, 預設為空格,tab及換行符

path :shell搜尋路徑

ps1,ps2:預設提示符($)及換行提示符(>)

term:終端型別,常用的有vt100,ansi,vt200,xterm等

count=1 

echo $count

count='a'

echo $count

count="aaaa"

echo $count

count=1.1

echo $count

date='date'

echo $date

test='ifconfig'

echo $test

echo "num:$#" #列印出來引數個數$#

echo "all paras:$*"列印出來引數有哪些

echo "all paras:$@"

echo "\$0 is $0"

echo "\$1 is $1"

echo "\$2 is $2"

echo "\$3 is $3"

echo "\$4 is $4"

echo "\$5 is $5"

echo "\$6 is $6"

echo "\$7 is $7"

echo "\$8 is $8"

echo "\$9 is $9"

echo "\$10 is $" #注意當有2個的時候,需要有大括號

echo "\$11 is $"

shell 基本的互動指令碼

格式 command tag range input1 tag range 說明 這種方法不是所有linux shell下的二進位制 指令碼都能夠使用,如使用makeself生成的.sh就不能用這種方法,這時候可以使用expect。常見錯誤 warning here document at line...

shell指令碼 預定義變數

有些變數是一開始執行script指令碼時就會設定,且不能被修改,我們叫他們為預定義變數。這些變數當一執行程式時就有了,以下是一些預定義變數 表示所有位置引數的內容,即以乙個字串顯示所有向指令碼傳遞的引數 以 1 2 n 的形式輸出所有引數 表示命令行中位置引數的個數,傳遞到指令碼的引數個數 與 相同...

shell指令碼編劇 函式定義 指令碼中斷

shell函式 將需要重複使用的操作,定義為公共的語句塊,叫函式 語法結構 格式1 function 函式名 格式2 函式 呼叫函式 函式名 引數1 引數2 在函式中使用位置變數來呼叫引數 位置變數 sh test.sh 引數1 引數2 vim test.sh bin bash echo 1 ech...