关于shell的基本常用操作如下:
请说出脚本的常用执行方式:
①使用bash 或者是 sh +脚本的相对路径或者是绝对路径,本质是使用bash解释器来执行脚本,因此脚本不需要具备执行权限
②采用输入脚本的绝对路径或者是相对路径执行脚本,该脚本必须具备可执行的权限;这种执行方式的本质是脚本自己执行,因此该脚本必须具备执行权限。
关键字export的作用:
[isea@hadoop109 ~]$ C=isea_you
[isea@hadoop109 ~]$ echo $C
isea_you
[isea@hadoop109 ~]$ cat hello.sh
#!/bin/bash
echo "hello world"
echo $C
[isea@hadoop109 ~]$ ./hello.sh
hello world
这里并没有输出变量的值,是因为在执行 ./ 的时候,开启了一个shell来执行,在新启动的shell中没有该变量,所以没有输出变量B的值
[isea@hadoop109 ~]$ export C
[isea@hadoop109 ~]$ ./hello.sh
hello world
isea_you
[isea@hadoop109 ~]$
由上面测试,export可以把变量提升为全局变量,可供其他shell环境变量使用,
bash中变量的默认类型是什么,能够进行数值计算:
[isea@hadoop108 ~]$ C=1+2
[isea@hadoop108 ~]$ echo $C
1+2
解释一下su - 切换用户和 su 切换用户的区别:
su 是不改变当前变量
su - 是改变为切换到用户的变量
也就是说,su - 是切换到root并获得root的环境变量及其执行权限
说说你用到的几个特殊变量
①:$n 表示的是获取第n个参数;
②:$# 表示的是,获取所有输入参数的个数 ,常用语循环
[isea@hadoop109 ~]$ cat hello.sh
#!/bin/bash
echo "$1 $2 $3 $4"
echo $#
[isea@hadoop109 ~]$ ./hello.sh a b c d e
a b c d
5
③:$* 表示命令行中所有的参数,$* 将所有的参数看做是一个整体
④:$@ 表示命令行中的所有参数,不过$@把每个参数区分对待
[isea@hadoop109 ~]$ cat hello.sh
#!/bin/bash
echo "$1--$2--$3--$4"
echo $#
echo $*
echo $@
[isea@hadoop109 ~]$ ./hello.sh a b c d
a--b--c--d
4
a b c d
a b c d
⑤:$? 返回最后一次执行命令的返回状态,变量为0表示执行成功,非0表示执行失败
请利用shell计算 1+3的结果:
[isea@hadoop109 ~]$ echo $[1+2]
3
[isea@hadoop109 ~]$ echo $((1+2))
3
计算(2+2)*4的结果
[isea@hadoop109 ~]$ echo $[(2+2)*4]
16
[isea@hadoop109 ~]$ A=$[(2+2)*4]
[isea@hadoop109 ~]$ echo $A
16
这里需要指出的是,对于计算结果的值,我们也是需要使用$去取的
请用 if else 完成 100 ,x ,的大小比较逻辑:
[isea@hadoop109 ~]$ cat hello.sh
#!/bin/bash
if [ $1 -eq 100 ]
then
echo $1 equals 100
elif [ $1 -gt 100 ]
then
echo $1 bigger than 100
else
echo $1 smaller than 100
fi
[isea@hadoop109 ~]$ ./hello.sh 33
33 smaller than 100
[isea@hadoop109 ~]$ ./hello.sh 100
100 equals 100
[isea@hadoop109 ~]$ ./hello.sh 101
101 bigger than 100
使用for完成 1 到100 的累加:
[isea@hadoop109 ~]$ cat hello.sh
#!/bin/bash
s=0
for((i=0;i<=100;i++))
do
s=$[$s+$i]
done
echo $s
[isea@hadoop109 ~]$ ./hello.sh
5050
说一下,dirname和basename的用法
basename会截取出文件名
dirname会取文件的到路径,
[isea@hadoop109 ~]$ basename /home/isea/iseayou.txt
iseayou.txt
[isea@hadoop109 ~]$ dirname /home/isea/iseayou.txt
/home/isea
说一下你常用的shell工具:下面是关于shell工具的链接详情:
下面是shell工具的详情介绍: