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 #include3#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二維陣列中並解析執行命令
1void cmdsplit(char cmd[max_len_part], const
char *str)211
else
1217 str++;18}
19 cmd[m][n] = '\0'
;20 }
解析命令:
1void cmd_parser(char *str)
221 }
執行命令
1void 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來解釋執...