Shell学习(1)

简介: Shell学习笔记

Shell解析器

Linux提供的Shell解析器有:

(base) yanziming@server20:~/vicent/shell$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh# 常用
/bin/bash# 常用
/bin/rbash
/bin/dash
/usr/bin/tmux
/usr/bin/screen
/bin/zsh
/usr/bin/zsh

查看系统默认解释器:

(base) yanziming@server20:~/vicent/shell$ echo $SHELL
/bin/bash

Shell脚本入门

脚本以#!/bin/bash开头,指定解析器

#!/bin/bash
echo "Hello Vicent!"
#echo 表示在终端输出内容

常用脚本执行方式

第一种:不需要可执行权限

1.sh+脚本相对路径 eg: sh *.sh

2.sh+脚本绝对路径

3.bash+脚本相对路径

4.bash+脚本绝对路径

第二种:需要可执行权限

首先赋予权限

chmod 777 *.sh

接着执行脚本:

./helloworld.sh#相对路径
#也可以使用绝对路径

Shell中的变量

系统变量

常用的系统变量

$HOME、$PWD、$SHELL、$USER等

变量定义规则

(1)变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写。(2)等号两侧不能有空格(3)在bash中,变量默认类型都是字符串类型,无法直接进行数值运算。(4)变量的值如果有空格,需要使用双引号或单引号括起来。

# 给变量A赋值
(base) yanziming@server20:~/vicent/shell$ A=8
(base) yanziming@server20:~/vicent/shell$ echo $A
8
# 撤销变量A
(base) yanziming@server20:~/vicent/shell$ unset A
# 静态变量不能被unset,只读变量
(base) yanziming@server20:~/vicent/shell$ readonly B=2
(base) yanziming@server20:~/vicent/shell$ echo $B
2
(base) yanziming@server20:~/vicent/shell$ B=9
bash: B: readonly variable
#变量无法进行数值运算
(base) yanziming@server20:~/vicent/shell$ C=1+2
(base) yanziming@server20:~/vicent/shell$ echo $C
1+2
#变量如果有空格需要用单双引号括起来
(base) yanziming@server20:~/vicent/shell$ D=I love banzhang

Command 'love' not found, but can be installed with:

snap install love  # version 11.2+pkg-d332, or
apt  install love

See 'snap info love' for additional versions.

(base) yanziming@server20:~/vicent/shell$ D="I love banzhang"
(base) yanziming@server20:~/vicent/shell$ echo $D
I love banzhang
# 使用expot 变量名 将变量提升为全局变量
[atguigu@hadoop101 datas]$ vim helloworld.sh 

在helloworld.sh文件中增加echo $B
#!/bin/bash

echo "helloworld"
echo $B

[atguigu@hadoop101 datas]$ ./helloworld.sh 
Helloworld
#将B提升为全局变量
[atguigu@hadoop101 datas]$ export B
[atguigu@hadoop101 datas]$ ./helloworld.sh 
helloworld
2

特殊变量:$n

$n (功能描述:n为数字,$0代表该脚本名称,$1-$9代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如${10}

操作实例:

[atguigu@hadoop101 datas]$ touch parameter.sh 
[atguigu@hadoop101 datas]$ vim parameter.sh

#!/bin/bash
echo "$0  $1   $2"

[atguigu@hadoop101 datas]$ chmod 777 parameter.sh

[atguigu@hadoop101 datas]$ ./parameter.sh cls  xz
./parameter.sh  cls   xz

特殊变量:$#

$#(功能描述:获取所有输入参数个数,常用于循环)。

[atguigu@hadoop101 datas]$ vim parameter.sh

#!/bin/bash
echo "$0  $1   $2"
echo $#

[atguigu@hadoop101 datas]$ chmod 777 parameter.sh

[atguigu@hadoop101 datas]$ ./parameter.sh cls  xz
parameter.sh cls xz 
2

特殊变量:$*$@

$* (功能描述:这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体)

$@ (功能描述:这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待)

[atguigu@hadoop101 datas]$ vim parameter.sh

#!/bin/bash
echo "$0  $1   $2"
echo $#
echo $*
echo $@

[atguigu@hadoop101 datas]$ bash parameter.sh 1 2 3
parameter.sh  1   2
3
1 2 3
1 2 3

特殊变量:$?

$? (功能描述:最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确了。)

[atguigu@hadoop101 datas]$ ./helloworld.sh 
hello world
[atguigu@hadoop101 datas]$ echo $?
0
相关文章
|
7月前
|
关系型数据库 MySQL Shell
shell学习(十七) 【mysql脚本备份】
shell学习(十七) 【mysql脚本备份】
57 0
|
2月前
|
监控 Unix Shell
shell脚本编程学习
【10月更文挑战第1天】shell脚本编程
84 12
|
7月前
|
Linux Shell 文件存储
【Linux技术专题】「夯实基本功系列」带你一同学习和实践操作Linux服务器必学的Shell指令(深入df和dh的区别和探索)
【Linux技术专题】「夯实基本功系列」带你一同学习和实践操作Linux服务器必学的Shell指令(深入df和dh的区别和探索)
201 1
|
7月前
|
监控 Linux Shell
【Linux技术专题】「夯实基本功系列」带你一同学习和实践操作Linux服务器必学的Shell指令(排查问题指令 - 下)
在线上排查问题时,查询日志、查看系统配置和分析操作系统信息是至关重要的。这些操作可以帮助我们深入了解软件和服务的兼容性,并解决潜在的问题。在本次学习中,我们将介绍并深入学习一些我在处理类似问题时常用的指令。通过掌握这些指令,你将能够更加高效地定位和解决线上问题,提高系统的稳定性和性能。让我们一同进入这个学习过程吧!
95 0
【Linux技术专题】「夯实基本功系列」带你一同学习和实践操作Linux服务器必学的Shell指令(排查问题指令 - 下)
|
5月前
|
Shell Linux
Shell 脚本编程学习
Shell 脚本编程学习
43 0
|
6月前
|
人工智能 运维 中间件
Linux-shell简单学习
Linux-shell简单学习
37 0
|
7月前
|
运维 Shell Python
Shell和Python学习教程总结
Shell和Python学习教程总结
|
7月前
|
机器学习/深度学习 Shell Linux
shell 学习记录
shell 学习记录
40 0
|
7月前
|
Shell
shell学习(六) 【case多条件分支语句】
shell学习(六) 【case多条件分支语句】
117 1
|
7月前
|
Shell 应用服务中间件 nginx
shell学习(七) 【shell 函数】
shell学习(七) 【shell 函数】
46 1