注意不能有控制,指令之間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=1echo $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...