-
编译型语言:C、C++、Go 等必须先通过编译生成可执行程序 .exe 之后可以在主机上直接运行。运行效率很高。
-
解释型语言:Python等,运行时需要解释器。开发效率高,但是运行效率低。
代码示例:
my.sh 后缀名可加可不加
#!/usr/bin/bash #指定解释器
echo "hello" #输出命令 shell都是通过一些命令去做具体的事,所以开发效率较高
exit 0
1、运行时需要 bash my.sh 可执行程序是bash , my.sh 只是作为参数传给bash。
2、也可以修改my.sh 的权限之后去运行它:
chomd u+x my.sh 之后 ./my.sh 因为具有了执行权限。但其实还是先运行bash 解释器之后然后依旧是作为参数传递给bash 去执行,因为计算机只能执行二进制可执行程序。
变量:
本地变量:
用户自己定义的
#!/usr/bin/bash
str="hello world" #等号两边不能有空格
val=100
echo "str=$str" #必须是双引号
echo "val=$val"
# echo 'val=$val' #单引号是直接打印这一串字符
exit(0)
1、等号左右不能有空格。
2、因为hello world 之间有空格所以必须加双引号。
3、要获取变量的值需要加$ 符号。
4、要想输出字符串常量就用单引号。
5、也可以给另一个变量赋值:
#!/usr/bin/bash
a=$val
echo a=$a
6、从键盘获取值并打印:
#!/usr/bin/bash
echo "input"
read line #read 后的变量可以自己任意定义
echo "read:$line"
exit 0
环境变量:
1、从父进程继承的变量,可以直接使用。
#!/usr/bin/bash
echo "\$0=$0"
echo "\s#=$#"
echo "\$$=$$"
2、$0 是当前脚本的名字,$# 是参数个数,$* 是获得所有参数,$$ 是当前脚本的 pid。(加\ 是表明不是输出双引号内的字符,而是说明要打印当前这个环境变量)
参数变量:
#!/usr/bin/bash
# 打印第1,2,3个参数,最大应该是9
echo "\$1=$1"
echo "\s2=$2"
echo "\$3=$3"
条件语句:
if [ ...... ]
then
#执行内容
fi #结束
1、从键盘输入123 判断是否相等:
echo "input"
read line
if test $line=123 #或者 if [ $line=123 ]
then
echo "=="
fi
2、-gt 大于 ,-lt小于(-ge 大于等于)
# 判断成绩是否合法
#!/usr/bin/bash
echo "input"
read line
if [ $line -gt 100 ] || [ $line -lt 0 ]
then
echo "成绩不合法"
exit 1
fi
3、-eq等于
#!/usr/bin/bash
echo "input"
read line
if [ "$line" -eq "123" ]
then
echo "=="
else
echo "!="
fi
4、判断文件类型
#!/usr/bin/bash
echo "input"
read name
if [ -d "$name" ]
then
echo "$name is dirent"
elif [ -f "$name" ]
then
echo "$name is file"
else
echo "$name not exosts"
fi
循环:
for, while, until(不满足一直循环,直到满足条件退出)
for循环:
#!/usr/bin/bash
for i in 1 2 3 4
do
echo "i=$i"
sleep 1
done
vals="a b c"
for i in $vals
do
echo "i=$i"
done
#另一种写法
val=`ls`
for i in &val
do
echo "i=$i"
done
#实现i+1操作
i=1
i=`expr $i + 1` #可以实现加减乘除
#let "i+=1"
echo "i=$i"
while循环:
i=0
sum=0
while [ "$i" -lt 10 ]
do
echo `expr $sum + $i` #反引号代表执行命令
let "&i+=1"
done
echo "sum=$sum"