赞
踩
Shell是一个命令行解释器,它接收应用程序/用户命令,然后调用操作系统内核。
优点:Shell还是一个功能相当强大的编程语言,易编写、易调试、灵活性强。
脚本以 #!/bin/bash
开头(指定解析器)
需求:创建一个Shell脚本,输出helloworld
1). 使用以下命令创建一个datas文件夹,存放脚本:
[xiaobai@hadoop100 ~]$ mkdir datas
2). 使用以下命令创建helloworld.sh脚本
[xiaobai@hadoop100 datas]$ touch helloworld.sh
3). 使用以下命令编辑helloworld.sh脚本:
[xiaobai@hadoop100 datas]$ vim helloworld.sh
4). 输入以下内容:
#!/bin/bash
echo "hello world"
5). 脚本执行方式:
方式1⃣️. 采用bash或sh+脚本的相对路径/绝对路径(不用赋予脚本+x权限)
sh+脚本的相对路径:
[xiaobai@hadoop100 datas]$ sh helloworld.sh
hello world
sh+脚本的绝对路径:
[xiaobai@hadoop100 datas]$ sh /home/xiaobai/datas/helloworld.sh
hello world
bash+脚本的相对路径:
[xiaobai@hadoop100 datas]$ bash helloworld.sh
hello world
bash+脚本的绝对路径:
[xiaobai@hadoop100 datas]$ bash /home/xiaobai/datas/helloworld.sh
hello world
方式2⃣️. 采用输入脚本的绝对路径/相对路径执行脚本(必须具有可执行权限+x
)
a. 首先赋予helloworld.sh 脚本的+x权限:
[xiaobai@hadoop100 datas]$ chmod 777 helloworld.sh
b. 执行脚本:
相对路径执行脚本:
[xiaobai@hadoop100 datas]$ ./helloworld.sh
hello world
绝对路径执行脚本:
[xiaobai@hadoop100 datas]$ /home/xiaobai/datas/helloworld.sh
hello world
tips:
方式1⃣️ ,本质是解析器帮助执行脚本,所以脚本本身不需哟啊执行权限;方式2⃣️ ,本质是脚本需要自己执行,所以需要➕x权限。
需求:
在/home/xiaobai/目录下创建一个welcome.txt, 新增内容“Welcome to China!”
1). 使用以下命令创建一个batch.sh脚本:
[xiaobai@hadoop100 datas]$ touch batch.sh
[xiaobai@hadoop100 datas]$ vi batch.sh
2). 如图,在batch.sh脚本添加以下内容:
#!/bin/bash
cd /home/xiaobai/
touch welcome.txt
echo "Welcome to China" >> welcome.txt
3). 运行batch.sh脚本:
[xiaobai@hadoop100 datas]$ bash batch.sh
4). 查看脚本运行结果:
$HOME、$PWD、$SHELL、$USER等;
查看系统变量的值:
[xiaobai@hadoop100 ~]$ echo $HOME
/home/xiaobai
[xiaobai@hadoop100 ~]$
[xiaobai@hadoop100 ~]$ echo $PWD
/home/xiaobai
[xiaobai@hadoop100 ~]$ echo $SHELL
/bin/bash
[xiaobai@hadoop100 ~]$ echo $USER
xiaobai
1). 定义变量:变量=值
[xiaobai@hadoop100 ~]$ a=1
[xiaobai@hadoop100 ~]$ echo $a
1
2). 撤销变量:unset 变量
[xiaobai@hadoop100 ~]$ unset a
[xiaobai@hadoop100 ~]$ echo $a
[xiaobai@hadoop100 ~]$
3). 声明静态变量:readonly 变量,
tips:只读 不可以使用unset
[xiaobai@hadoop100 ~]$ readonly b=2
[xiaobai@hadoop100 ~]$ echo $b
2
[xiaobai@hadoop100 ~]$ unset b
-bash: unset: b: cannot unset: readonly variable
1). 变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名最好大写!
2). 等号两侧❌有空格;
3). 在bash中,变量默认类型都是字符串类型,无法直接进行数值运算;
[xiaobai@hadoop100 ~]$ c=1+2
[xiaobai@hadoop100 ~]$ echo $c
1+2
4). 变量的值如果有空格,需要使用双引号 " " / ’ ’ 括起来。
[xiaobai@hadoop100 ~]$ d="i love China"
[xiaobai@hadoop100 ~]$ echo $d
i love China
tips:
使用“ export 变量名 ” 可以将变量提升为全局环境变量,供其他Shell程序使用。
eg:
如图,在helloworld.sh 中增加 echo $d:
如果不将 d 提升为全局变量,helloworld.sh 并不会打印出 d 的值:
[xiaobai@hadoop100 datas]$ vi helloworld.sh
[xiaobai@hadoop100 datas]$ echo $d
i love China
[xiaobai@hadoop100 datas]$ ./helloworld.sh
hello world
使用 “ export d ” 将d提升为全局变量,重新打印helloworld.sh :
[xiaobai@hadoop100 datas]$ export d
[xiaobai@hadoop100 datas]$ ./helloworld.sh
hello world
i love China
$n (功能描述:n为数字,$0代表该脚本名称,$1-$9代表第一到第九个参数,声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。