目录
c/c++、java、shell的区别
c/c++:编译型语言,不能直接运行,执行效率比较高
.c/.c++---->.exe
生态:开源网络库、做大型应用软件、物联网、嵌入式(智慧农业、硬件设备,控温的)做界面qt、服务器后端开发中间件、redis
Java:既需要解释器,也需要编译
.java--->.class---->.exe
(编译器生成)calss文件(是二进制的),需要用解释器(java虚拟机),隐藏了虚拟机,编代码方便,有内存回收机制,不用考虑内存(指针啥东东)
生态:大数据开发、云计算、有很多好的大的框架(特别成熟)
shell编程需要解释器来解释执行,(解释器例如bash)
了解shell脚本语言
脚本程序一般以xx.sh结尾,但不是必须的
//以下为脚本文件my.sh
#!/usr/bin/bash ///指定解释器
echo "hello"
exit 0;
#bash my.sh
//运行my.sh文件
//输出 hello
bash其实是播放器,my.sh就是音乐
chmod u+x my.sh //增加运行权限
./my.sh //用解释器来运行my.sh
which python3 //查找python文件所在文件夹
vi a.py//打开新文件
print("hello py")
exit(0)
///python3 a.py :打开python文件
///或者chmod u+x a.py :增加权限打开文件
使用脚本优先完成
shell基本语法
变量
1.本地变量
#!/usr/bin/bash //#!有着特殊命令,/usr/bin/bash 解释器的位置
#本地变量 //#代表屏蔽
str=hello
a="123"//1.直接赋值
echo "a=$a" //打印//$表名要取变量的值 a与前面无关
echo='a=$a'
exit 0
输出:
a=123
a=$a
str=hello
mystr=$str //2.$赋值
read line ///3.从键盘获取
//在定义变量的时候=左右两边不允许有空格
#三种赋值
str=hello
a="123"//1.直接赋值
mystr=$str //2.$赋值
read line ///3.从键盘获取
2.环境变量
#!/usr/bin/bash
#环境变量:从父进程获取
echo psth=$PATH
// $PS1:把命令提示符改为自己喜欢的样式
echo "\$0=$0" ///使用\,让$失去原有的作用
echo "\$#=$#"
echo "\$$=$$"
3.参数变量
#!/usr/bin/bash
#参数变量
eco psth=$PATH
echo "\$1=$1" //打印出第一个参数
echo "\$2=$2" //打印出第二个参数值
echo "\$3=$3" //打印出第三个参数值
echo "\$0=$0" //名称
echo "\$#=$#" //变量个数
echo "\$$=$$" //pid的值(进程号)
#运行命令:.\my.sh hello 123 a
#输出结果:
$1=hello
$2=123
$3=a
$0=./my.sh
$#=3
$$=21372
条件
#!/usr/bin/bash
#三种条件
if test -f fred.c
then
...
fi
#还可以
if [ -f fred.c ]
then
...
fi
//以下为例子
echo "input"
read line
if ["$line" = "123" ]//必须要有空格
then
echo "=="
fi
#或者
if test "$line" = "123"
then
echo "=="
fi
#if else语句
if ["$line" = "123" ]//必须要有空格
then
echo "=="
else
echo "!="
fi
#算术运算
#语法大致和C语言一致
#判断输入的值在0到100之间
if [ "$line" -gt "0" ] && [ "line" -lt "100" ] //-gt是大于的意思 -lt是小于的意思
then
echo "0 < $line <100"
fi
#判断给入的文件名是目录还是普通文件
if [ -d "$line" ] //-d判断是不是目录文件
then
echo "$line is dirent"
elif [ -f "$line" ] //-f判断是不是普通文件
then
echo "$line is file"
else
echo "$line not find"
fi
一个小小的应用
给出成绩给评分A、B、C、D
#!/usr/bin/bash
input="请输入成绩:"
read line
echo "请稍等"
if [ "$line" -lt "0" ] || [ "$line" -gt "100" ]
then
echo "输入错误!"
exit 1
fi
#请你千万不要忘记写fi
if [ "$line" -gt "0" ] && [ "$line" -lt "60" ]
then
echo "D"
elif [ "$line" -ge "60" ] && [ "$line" -lt "70" ]//-ge是大于等于的意思
then
echo "C"
elif [ "$line" -ge "70" ] &&[ "$line" -lt "80" ]
then
echo "B"
else
echo "A"
fi
算术比较不能有字母,一有字母就崩掉
循环
#!/usr/bin/bash
#for循环
for i in 1 2 3
do
echo i=$i
sleep 1
done
for i in $str
do
echo i=$i
sleep 1
done
#while循环
i=0
while true#条件也可以为true,陷入死循环
do
echo "520"
done
while [ $i -lt 10 ]
do
echo "$i"
i=`expr $i + 1`#执行i+=1
let "i+=1" #执行i+=1
done
#until循环
until condition
do
statement
done
#一些算术运算
i=1
let "i+=1"
i=` expr $1 \* 3`
echo "i=$i"
函数
#函数定义
fun()
{
echo "fun run"
}
#调用
fun
#函数的参数
脚本调用/c语言调用脚本、
常用命令(awk、sed)
awk -F. '{print $1}' file > a.txt