如何高效的从一个语言过渡到另一个语言

引言

在此之前,必须要声明一下,品尝该文档也需要有一点的基础(学过一门语言),该文档只会教你如何去正确有效的学习一门新的语言,而不是让你走后门,几天了解一门语言,而且该文档主要都是自己观点,不代表其他人的观点,所以必然会存在着错误思想,作者也不是大牛只是学了几种必学语言(c,c++,java,python等),为了体现文章可用性,本篇将与读者一样重新学一门语言(shell编程)


为什么’你’会选择点进来

排名 1-20 的编程语言

排名 21-50 的编程语言

看到排名,谁都能轻易有一个想法--------学那么多语言干嘛,直接学一个第一名语言不就ok了吗! 学那么多编程语言然后给自己找麻烦,浪费时间???
其实为什么每年都会对编程语言进行排名,以我的想法来看,主要是为了让你明白什么是必学语言,什么是未来可发展语言,其实当你点进来看这篇文档无疑就是明白这个道理正准备去学习下一个语言,但是不知道如何下手,接下来就看看作者如何去学习新的编程语言shell编程(脚本编程语言)


学一门语言我是这样下手的

数据基本类型

学习一门语言前我肯定需要了解该语言有那些数据基本类型

c : 整型(int),短整型(short),长整型(long),单精度(float),双精度(double),字符型(char),布尔型(bool)
c++: 整型(int),短整型(short),长整型(long),单精度(float),双精度(double),字符型(char),字符串(string),布尔(bool)
java:字节(byte),整型(int),,短整型(short),长整型(long),单精度(float),双精度(double),字符型(char),字符串(String),布尔(boolean)
python:数字(number),字符串(string),列表(list),元组(tuple),字典(dict),集合(set)
shell:字符串,整型,数组

变量名规则

1 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
2 中间不能有空格,可以使用下划线。
3 不能使用标点符号。
4 不能使用语言里的关键字。


变量初始化

无疑初始化是理解数据类型的必要条件

整型初始化

C:      int 变量=值; 
C++:      int 变量=值;
java:   int 变量=值;
python: 变量=数字
shell:  变量=数字   

浮点初始化

C:      float 变量=值; 
C++:      float 变量=值;
java:   float 变量=值f;

字符串初始化

C:      char 变量[]="值"; 
C++:    string 变量="值";
java:   String 变量=new String("值"); || String 变量="值"
python: 变量="值"
shell:  变量="值"   

从上面可以看出5种编程语言对变量初始化都是大同小异,相似度极高,相识度高无疑可以让我用到最有效的方法-----类比法,所以接下来可以通过用类比法来进行学习shell编程


万能学习法—类比法

拿什么编程语言去与shell编程比

拿什么编程语言去比,无疑肯定要是自己学过的语言进行比较,如果自己学的语言很多,那就更容易进行比较,如果自己学的语言比较少那就只能找二者之间的异同点

知己知彼->百战百胜

我学shell编程肯定需要从shell编程的定义中找到重要信息

shell编程

Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。

官方这一定义就让我有了类比的对象了

类比对象(c语言):

c语言有什么?

  1. 头文件
  2. 输入输出函数
  3. 数组
  4. 选择结构
  5. 循环结构
  6. 函数定义
1.头文件
c:        #include<stdio.h>
shell:    #!/bin/bash
2.输入输出函数

C语言输出函数:

printf("内容");
printf("%变量类型",表达式);

shell编程输出函数:

echo "内容"
echo ${变量名}

C语言输入函数:

scanf("%变量类型",&变量名);

shell编程输入函数:

read -p "提示内容" 变量名
3.数组

c语言数组初始化及其使用

int a[5]={1,2,3,4,5};
printf("%d",a[0]);//数组的访问方式 a[下标]

shell语言数组初始化及其使用

a=(1,2,3,4,5);
echo "第0个元素:"${a[0]}
echo "所有元素: "${a[@]}
echo "数组长度: "${#a[@]}

c语言的元素操作

a[0]=2 //改

shell编程的元素操作

a=(${a[@]} 4)
echo "末尾追加1个元素后: "${a[@]}
a[1]=5
echo "修改第1个元素后: "${a[@]}
unset a[1]
echo "删除第1个元素后: "${a[@]}
unset a
echo "删除所有元素后:  "${a[@]}
4.选择结构
c语言的选择结构基本语法
if(条件){
}else if(条件){
}else{
}

字符串判断

符号含义
==判断两个字符是否相等
!=判断两个字符串不相等

数字判断

符号含义
==判断二个数字是否相等
>判断数字1是否大于数字2
<判断数字1是否小于数字2
>=判断数字1是否大于等于数字2
<=判断数字1是否小于等于数字2
!=判断二个数字是否不相等

逻辑判断

符号含义
&&与运算
或运算
!取反
shell语言的选择结构基本语法
if [ $c=1];then
…
elif [ $c=2];then
 …
fi

字符串判断

符号含义
==判断两个字符是否相等
!=判断两个字符串不相等
-z判断字符串长度是否为 0 zero
-n判断字符串是否为空 null

数字判断

符号含义
-eq判断二个数字是否相等
-gt>
-lt<
-ge>=
-le<=
-ne!=

逻辑判断

符号含义
&&与运算
-a与运算
或运算
-o或运算
!取反
4.循环体

c语言中有三大循环体结构 while do…while,for
还有一个特例switch

for(变量;条件;表达式){
}

while(条件){
}

do{
}while(条件)
swich(变量):
 case 条件:
 defalut:

shell编程

for 临时变量 in 一串数据
do 开始循环
 循环中的代码
done 循环结束

while 条件
do
循环执行的代码
done

shell 中提供了另一种选择结构,用于匹配操作
```c
case 变量 in
 值 1)
 要执行的代码
 ;;2)
 要执行的代码
 ;;
 *)
 全部都没有匹配成功
 ;;
esac


可以看出c语言中的for while 和shell的区别在于{},shell用do代表{,done代表}

6.函数定义

c语言的的函数定义

返回的数据类型 函数名(传参){
}
函数名(形参)

shell编程的函数定义

function 函数名(传参){
}
或者
函数名(传参){
}
函数名

结尾

看完这篇差不多你就基本上能明白shell编程的基本使用,然后可以通过编程c语言程序,在将其转化为shell编程从而达到真正的类比




  • 关注微信公众号【爱上开源】,该公众号会为你提供作者在网上找到有趣的开源项目,会将使用过程写成文章呈现给读者.公众号还提供爬虫和部分计算机资源给读者.如果读者想要什么资源可以私信给我,作者会尽力查询(不要涉嫌违法资源即可)

更多推荐

如何高效的从一个语言过渡到另一个语言