《大数据和人工智能交流》头条号向广大初学者新增C 、Java 、Python 、Scala、javascript 等目前流行的计算机、大数据编程语言,希望大家以后关注本头条号更多的内容。
Linux的shell脚本编程
一、最简单的shell
1、Shell的结构:
(1)、#!指定执行脚本的shell
(2)、#注释行
(3)、控制结构
2、创建shell的步骤:
(1)、使用vi编辑器创建以.sh结尾的文件 :vi demo.sh
(2)、编辑相关shell程序,编写完毕后加执行权限:
chmod u+x demo.sh
(3)、执行程序 ./demo.sh
也可以使用sh demo.sh来执行
使用 sh -x demo.sh中的x表示脚本的执行过程
使用 sh -n demo.sh不执行脚本,只是检查语法的错误,返回所有错误信息
二、shell的变量
Shell变量包括:临时变量和环境变量,临时变量时shell程序内部定义的,对其他程序不可见,包括用户自定义变量和位置变量;环境变量就是全局变量,不随着shell脚本的结束而消失
在使用变量值的时候,要在变量名前加前缀”#34;
变量赋值用”=”,注意两边不能有空格
变量赋值举例:
1、 NUM=1
2、将一个命令的执行结果赋给变量,例如
time=`date`
time=(date +%F) echo $time
3、将一个变量赋给另一个变量:A=$B
查看变量的值:echo $A
字符串用单引号或者双引号
双引号有自动解析变量的功能
例如:
sum=100
echo “The total is $sum”
set为显示所有的环境变量
删除变量unset
三、位置变量和特殊变量
1、位置变量
Shell解释执行用户命令的时候,将命令行的第一部分作为命令名,其他部分作为参数。有出现在命令行上的位置确定的参数成为位置参数
例如:ls -l file1 file2 file3
$0位置被个程序的文件名占用,其它剩余位置$1 $2 $3…$9
例如:在test.sh中有如下内容
mkdir files$1_s00$2_class$3
执行时候./test.sh 001 1 001,表示$0被test.sh占用、$1被001占用、1被$2占用,001被$3占用
2、特殊变量
$*这个程序的所有参数
$#这个程序的参数个数
$这个程序的 PID
$!执行上一个后台的PID
$?执行上一个命令的返回值
例如有test.sh程序,内容如下:
echo ‘$# is:’ $#
echo ‘$* is:’ $*
echo ‘$? is:’ $?
echo ‘$ is:’ $
echo ‘$0 is:’ $0
运行 ./test.sh p1 p2 p3 后查看结果
四、shell的命令
1、Read命令:从键盘读入数据,赋给变量
例如 read x 100 ; echo $x
如程序test.sh:
read a1 a2 a3
echo “the a1 value is $a1”
echo “the a2 value is $a2”
echo “the a3 value is $a3”
则执行的时候
./test.sh 100 200 300
2、expr指令:对整型变量进行算术运算
例如expr 100 + 200注意加号左右有空格
del@box:/temp$ expr 100 + 200
300
另外注意乘法为” \*”,要有转义符
例如3 \* 5
复杂的运算:expr `expr 6 + 9` / 3
将运算的结果赋予变量 x=`expr 1 + 2`
3、变量测试语句:
测试变量是否相等、为空等情况。语法:test 测试条件;测试范围:整数、字符串、文件
(1)字符串测试:
test str1=str2 测试字符串是否相等
test str1!=str2 测试字符串是否不相等
test str1 测试字符串是否不为空
test -n str1 测试字符串是否不为空
test -z str1 测试字符串是否为空
(2)测试整数
test int1 -eq int2 测试int1和int2是否相等
test int1 -ge int2 测试int1是否>=int2
test int1 -gt int2 测试int1是否>int2
test int1 -le int2 测试int1是否<=int2
test int1 -lt int2 测试int1是否<int2
</int2
test int1 -ne int2 测试int1和int2是否不相等
(3)文件测试
test -d file 指定文件是否目录
test -f file 指定文件是否常规文件
test -x file 指定文件是否可执行
test -r file 指定文件是否可读
test -w file 指定文件是否可写
test -a file 指定文件是否存在
test -s file 文件大小是否非0
测试语句一般不单独使用,一般配合if语句来判断,如:
if test -d $1 then
…….
fi
变量测试语句也可以用[]简化,例如:
test -d $1等价于 [ -d $1 ] 注意:中括号左右的表达式要有空格
五、流程控制
1、选择结构if语句
(1) If [ ]; then
fi
(2) If [ ]; then
else
fi
例如:
If [ $# -ne 2 ]; then
echo “not enough parameters”
exit 0 //0表示正常退出
fi
If[ $1 -eq $2 ];then
echo “$1 equals $2”
fi
(3) If [ ] then
elif [ ]
elif [ ]
else
例如:test.sh内容如下
read file_name
if [ -d $file_name ]
then
echo “This is directory!!!”
elif [ -f $file_name ]
then
echo “This is file!!!”
else
echo “This is nothing!!!”
fi
条件组合查询:
-a :逻辑与,条件都成立的时候结果为真
-o :逻辑或,只要有一个条件成立,结果为真
例如:test.sh内容如下
read file_name
if [ -d $file_name ]
then
echo “This is directory!!!”
elif [ -f $file_name ]
then
echo “This is file!!!”
elif [ -c $file_name -o -b $file_name ]
echo “This is device file!!!”
else
echo “This is nothing!!!”
fi
2、for循环
语法:
for 变量 in 名字表
do
…..
done
例如:
for x in 11 22 33 44 55 66
do
echo “x value is : $x”
done
3、case语句
语法:
case “$variable” in
“$condition1” )
command…
;;
“$condition2” )
command…
;;
esac
对变量使用””并不是强制的, 因为不会发生单词分割
每句测试行, 都以右小括号)来结尾
每个条件判断语句块都以一对分号结尾 ;;
case块以esac (case的反向拼写)结尾
例如,有下列程序test.sh内容如下:
read c
case $c in
a)
echo “this is a”
;;
b)
echo “this is b”
;;
c)
echo “this is c”
;;
*)
echo “none”
esac
4、while循环
基本语法:
while [ condition ]
do
command1
command2
command3
done
例如,test.sh中的写法如下:
num=1
while [ $num -le 10 ]
do
sum=`expr $num \* $num`
echo $sum
num=`expr $num+1`
done
5、break和continue语句
break:结束循环
continue:结束本次循环,开始新的一轮循环
例如:
while true
do
echo “============================”
echo ” 1 add “
echo “2 delete “
echo “3 update”
echo “4 Quit”
read num_op
case $num_op in
1)
echo “this is add operation”
;;
2)
echo “this is delete operation”
;;
3)
echo “this is update operation”
;;
4)
echo “exit …..”
break
;;
esac
done
6、shift指令
参数左移:每执行一次,参数序列顺次左移一个位置,即$#的值减去1。其用于处理每个参数,移动出去的参数不能再用
例如,test.sh文件内容如下:
If [ $# -le 0 ]
then
echo “not enough parameters”
exit 0
Fi
Sum=0
While [ $# -gt 0 ]
sum=`expr $sum + $1`
shift
Done
Echo $sum
《大数据和人工智能交流》的宗旨
1、将大数据和人工智能的专业数学:概率数理统计、线性代数、决策论、优化论、博弈论等数学模型变得通俗易懂。
2、将大数据和人工智能的专业涉及到的数据结构和算法:分类、聚类 、回归算法、概率等算法变得通俗易懂。
3、最新的高科技动态:数据采集方面的智能传感器技术;医疗大数据智能决策分析;物联网智慧城市等等。
根据初学者需要会有C语言、Java语言、Python语言、Scala函数式等目前主流计算机语言。
根据读者的需要有和人工智能相关的计算机科学与技术、电子技术、芯片技术等基础学科通俗易懂的文章。
最新评论