shell程式設計 定義簡單標準命令集

2022-05-05 20:12:09 字數 2253 閱讀 1549

shell是使用者操作介面的意思,作業系統執行起來後都會給使用者提供乙個操作介面,這個介面就叫shell,使用者可以通過shell來呼叫作業系統內部的複雜實現,而shell程式設計就是在shell層次上進行程式設計,如linux中的指令碼程式設計。

shenll執行原理:由訊息接收、解析、執行構成的死迴圈。

命令列shell:該死迴圈包含3個模組(命令接收、命令解析、命令執行),命令列有乙個標準命令集,使用者輸入的命令若不是標準命令,則提示使用者這不是乙個合法命令列,然後重新回到命令列讓使用者輸入下乙個命令。

常見的shell:uboot、linux終端、windows圖形介面等

shell例項1:使用printf和scanf做輸入回顯

#include #include 

#define max_line_length 256 //

定義命令列長度,命令不能超過這個長度

int main(void

)

return0;

}

memset(str,0,sizeof(str))

1

//清除陣列

2void memset(char *p, int val, int

length)

310 }

shell例項2:解析使用者輸入命令並回顯

1 #include 2 #include 

3#define max_line_length 256 //

命令列長度,命令不能超過這個長度45

//巨集定義一些標準命令

6#define led "led"

7#define lcd "lcd"

8#define pwm "pwm"

9#define cmd_num 3 //

當前系統定義的命令數

1011

char

g_cmdset[cmd_num][max_line_length];

1213

//初始化命令列表

14static

void init_cmd_set(void)15

2122

int main(void)23

47}48if (i >=cmd_num)

4953}54

55return0;

56 }

void strcpy(char *dst, const char *src)

1

//複製字串常量到陣列中

2void strcpy(char *dst, const

char *src)

38 }

int strcmp(const char *cs, const char *ct)

1

//比較兩字串是否相同

2int strcmp(const

char *cs, const

char *ct)314

return0;

15 }

shell例項3:shell程式設計將使用者輸入的字串命令按照空格分隔成多個字串,依次放入cmd二維陣列中並解析執行命令

1

void cmdsplit(char cmd[max_len_part], const

char *str)211

else

1217 str++;18}

19 cmd[m][n] = '\0'

;20 }

解析命令:

1

void cmd_parser(char *str)

221 }

執行命令

1

void cmd_exec(void)2

12 }

Shell 簡單程式設計

bin bash sh1.sh name admin npass 123 loops 1 filename dlxxlog.log logins logins 使用者資訊匯入日誌 servermessage longen while loops lt 3 do if user name a pass...

shell簡單程式設計

0 表示shell檔案本身的檔名.1,2,3 指向每個引數 表示引數的個數 表示所有引數的整體 x 用於取變數x的值 程序id.shift移動乙個引數。相當於nop,是一條空命令,while true 死迴圈.用於在一行分隔命令,if condition then export x 100 匯出乙個...

shell指令碼簡單命令

shell 命令直譯器 處於系統核心和使用者之間負責解釋命令列的 登入之後預設的shell程式是 bin bash 不同的shell內部指令,執行環境會有所區別 常見的shell bin sh bin bash sbin nologin bin bash 是指這個指令碼是用 bin bash來解釋執...