【博学谷学习记录】大数据课程-学习第二周总结

shell编程

shell脚本执行方式Shell 是一个用 C 语言编写的程序,通过 Shell 用户可以访问操作系统内核服务。它类似于 DOS 下的 command 和后来的 cmd.exe。Shell 既是一种命令语言,又是一种程序设计语言。

#!/bin/bash 
echo 'hello world'

#! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell。注意,在shell脚本中除了第一行的#表示特殊格式外,其他地方的#一般表示注释。
echo命令用于向窗口输出文本。

shell脚本有三种执行方式

[root@node1 ~]# cd /export/data/shell/ 
[root@node1 shell]#sh hello.sh 
hello world
[root@node1 ~]#cd /export/data/shell/
[root@node1 shell]# chmod +x hello.sh 
[root@node1 shell]# ./hello.sh 
hello world
[root@node1 ~]# /export/shell/hello.sh 
hello world

shell的数据类型

字符串:
字符串是shell编程中最常用最有用的数据类型,字符串可以用单引号,也可以用双引号,也可以不用引号。建议使用双引号,因为双引号里可以有变量和特殊字符,可以按照变量和特殊字符去使用。
声明字符串类型的变量:

整数型:
在Shell中所有的变量默认都是字符串型。默认情况下,所有的数值都是不能进行运算的,如果想要进行数学运算,可以使用“ ( ( 运算式 ) ) ”或“ ((运算式))”或“ ((运算式))[运算式]”方式运算(后续讲)

在shell中有3种变量:用户变量、环境变量、特殊变量

用户变量

在对变量赋于字符串值时,建议使用引号将其包裹。如果字符串中存在空格,请一定要使用单引号或双引号将整个内容包裹。注意:单引号里的内容原封不动的输出,双引号里有变量的调用则会调用变量

[root@node1 ~]# usernmae="itcast" 
[root@node1 ~]# echo $usernamedb.log #这种方式不可以 
.log 
[root@node1 ~]# echo "$username"db.log #可以
itcastdb.log 
[root@node1 ~]# echo ${username}db.log #可以 
itcastdb.log 
#!/bin/bash 
echo "who are you?" 
read name  #从键盘获取变量的值 
pwd_string=$(pwd) #将当前的绝对路径赋值给pwd_string变量 
date_string=`date` #将当前时间赋值给date_string变量,注意这里使用的是反引号
echo "hello, $name" 
echo $pwd_string 
echo $date_string 

使用 unset 命令可以删除变量

#!/bin/sh 
myUrl="http://www.runoob.com" 
unset myUrl 
echo $myUrl

环境变量

当shell程序启动时,都自动设置一组变量,这组变量就是环境变量。shell中的所有命令都可以使用这些变量,环境变量可以在/etc/profile中设置,环境变量的名字习惯上使用大写字母。

特殊变量

我们可以在执行 Shell 脚本时,向脚本传递参数,这时候可以使用特变变量来获取参数,Shell常用的特殊变量如下:
变量 解释
$# 命令行参数的个数
$n $1表示第一个参数,$2表示第二个参数,以此类推
$0 当前程序的名称
$? 前一个命令或许或函数的返回码
$* 以“参数1 参数2 。。。”形式保存所有参数
$@ 以“参数1”“参数2”。。。形式保存所有参数
$$ 本程序的(进程ID号)PID
$! 上一个命令的PID

#!/bin/bash 
echo "Shell 传递参数实例!"; 
echo "执行的文件名:$0"; 
echo "第一个参数为:$1"; 
echo "第二个参数为:$2"; 
echo "第三个参数为:$3"; 
echo "参数个数为:$#"; 
echo "传递的参数作为一个字符串显示*:$*"; 

shell算术运算符

Shell 和其他编程一样,支持包括:算术、关系、布尔、字符串等运算符。原生 bash 不支持简单的数学运算,但是可以通过其他命令来实现,例如expr。expr 是一款表达式计算工具,使用它能完成表达式的求值操作。
运算符 说明 举例

  • 加法 expr $a + $b 结果为 30。
  • 减法 expr $a - $b 结果为 -10。
  • 乘法 expr $a \* $b 结果为 200。
    / 除法 expr $b / $a 结果为 2。
    % 取余 expr $b % $a 结果为 0。
    = 赋值 a=$b 将把变量 b 的值赋给 a。
    == 相等。用于比较两个数字,相同则返回 true。 [ a == b ] 返回 false。
    != 不相等。用于比较两个数字,不相同则返回 true。 [ a != b ] 返回 true。
#!/bin/bash 
a=4
b=20
#加法运算 
echo `expr $a + $b`
#减法运算 
echo `expr $a - $b`
#乘法运算,注意*号前面需要反斜杠 
echo `expr $a \* $b`
#除法运算 
echo `expr $a / $b`
#此外,还可以通过$(())、$[]进行算术运算。 
echo "a = $a" 
c=$((a+b))
d=$[a+b]
echo "c = $c" 
echo "d = $d"

你可能感兴趣的:(shell,学习,bash,linux)