一个用 C 语言实现的迷你 Shell 解释器,支持变量、数组、算术运算、控制流语句和管道。
make交互模式:
./mini-shell执行脚本文件:
./mini-shell script.msha=10;
b=a; # 变量赋值
echo a; # 输出: 10支持 + - * / % 运算符:
a=10+5; # a=15
b=a*2; # b=30
c=100%7; # c=2
echo c;arr[5]={1,2,3,4,5}; # 声明并初始化数组
echo arr[0]; # 输出: 1
arr[2]=100; # 修改元素
tmp=arr[2]; # 读取到变量支持 == != > < >= <= 比较运算符:
a=10;
if a>5 {echo a;};
if a==10 {b=1;};i=0;
while i<10 {echo i;i=i+1;};ls | grep main
cat file.txt | wc -l
ls | grep c | wc -la=48;b=18;while b!=0{t=b;b=a%b;a=t;};echo a;
# 输出: 6n=5;r=1;while n>0{r=r*n;n=n-1;};echo r;
# 输出: 120n=25;a=0;b=1;i=0;while i<n{t=a+b;a=b;b=t;i=i+1;};echo a;
# 输出: 75025n=17;i=2;flag=1;while i<n{z=n%i;if z==0{flag=0;};i=i+1;};echo flag;
# 输出: 1 (是素数)c=0;n=2;while n<=100{i=2;f=1;while i<n{z=n%i;if z==0{f=0;};i=i+1;};if f==1{c=c+1;};n=n+1;};echo c;
# 输出: 25arr[5]={5,2,8,1,9};n=5;i=0;while i<n{j=0;m=n-1;while j<m{tmp=arr[j];k=j+1;tmp2=arr[k];if tmp>tmp2{arr[j]=tmp2;arr[k]=tmp;};j=j+1;};i=i+1;};echo arr[0];echo arr[1];echo arr[2];echo arr[3];echo arr[4];
# 输出: 1 2 5 8 9s=0;i=0;while i<1000{d=i*4+1;t=40000/d;s=s+t;d=i*4+3;t=40000/d;s=s-t;i=i+1;};echo s;
# 输出: 31404 (π×10000 ≈ 31415)n=27;c=0;while n!=1{z=n%2;if z==0{n=n/2;};if z!=0{n=n*3+1;};c=c+1;};echo c;
# 输出: 111- 每条语句以
;结尾 if和while的循环体用{}包裹- 变量名由字母组成,区分大小写
- 仅支持整数运算
| 项目 | 限制 |
|---|---|
| 最大变量数 | 32 |
| 最大数组大小 | 64 |
| 单行最大长度 | 256 字符 |
| 最大 token 数 | 64 |
exit