Shell基础知识(一)

发布于:2024-05-19 ⋅ 阅读:(158) ⋅ 点赞:(0)

一、shell简介

shell是命令解释程序,它有很多种,例如:sh、bash、ash、dash等。

不同系统可能会使用不同的shell

#查看当前系统使用的shell是哪种
echo $SHELL
#输出,当前系统默认使用bash
/bin/bash

二、shell格式

2.1 新建一个shell脚本文件

#创建hello.sh文件
touch hello.sh
#修改权限
chmod +x hello.sh

#编辑脚本文件
vim hello.sh

向hello.sh添加以下代码

#第一行开始的格式
#!/bin/bash

echo "hello"

2.2 执行脚本方式

#1.查看当前系统有哪些shell
ll /bin/ | grep sh
#输出
-rwxr-xr-x  1 root root 1037528 7月  13  2019 bash*
-rwxr-xr-x  1 root root  253816 8月  14  2019 btrfs-show-super*
-rwxr-xr-x  1 root root  154072 2月  18  2016 dash*
lrwxrwxrwx  1 root root       4 5月  17 20:28 rbash -> bash*
lrwxrwxrwx  1 root root       4 5月  17 20:28 sh -> dash*
lrwxrwxrwx  1 root root       4 5月  17 20:28 sh.distrib -> dash*
lrwxrwxrwx  1 root root       7 3月   7  2019 static-sh -> busybox*
#以上可以看到有bash 和sh 两种


#2.使用不同shell执行
#使用默认shell执行
./hello.sh

#指定使用 bash 执行
bash hello.sh

#指定使用 sh 执行
sh hello.sh

#以上两种都输出
hello

三、变量

3.1系统变量

常用系统变量

#当前主目录
echo $HOME
#当前用户
echo $USER
#默认工作目录
echo $PWD
#默认shell
echo $SHELL
#默认语言
echo $LANGUAGE

echo [$+变量名]
#等价于
printenv 变量名

3.2自定义变量

#定义变量  等号前面不能有空格
#变量名=变量值   
MyName="lisi"

#撤销变量
unset MyName

撤销案例

a=2
echo $a
#输出
2
#撤销变量
unset a
echo $a
#输出空行

3.3 特殊变量

3.3.1 $n 传入变量

  $n 中的n是指代数字,表示第n个传入变量 第0个变量是脚本名称,其中$1-$9是第1个到第9个变量,十以上需要用大括号包括 ${10}

3.3.2 $# 输入参数个数

  $# 是输入参数个数,可以在shell脚本中通过该变量获取。

3.3.3 $*$@ 输入参数内容

  这俩个都是获取所有输入参数,但是$@可以被遍历

#编辑hello.sh

#!/bin/bash
echo '=======$n========='
echo '$0 arg0 is:'  $0
echo '$1 arg1 is:'  $1
echo '$2 arg2 is:'  $2
echo '$3 arg3 is:'  $3
echo '$4 arg4 is:'  $4
echo '=======$#========='
echo 'args total is:' $#
echo '=======$*========='
echo 'args str is:' $*
echo '=======$@========='
echo 'args str enumable is' $@

#执行命令
./hello.sh arg1 arg2 arg3 arg4 arg5
#输出
=======$n=========
$0 arg0 is: ./hello.sh
$1 arg1 is: arg1
$2 arg2 is: arg2
$3 arg3 is: arg3
$4 arg4 is: arg4
=======$#=========
args total is: 5
=======$*=========
args str is: arg1 arg2 arg3 arg4 arg5
=======$@=========
args str enumable is arg1 arg2 arg3 arg4 arg5

3.3.4 $? 上一条命令执行结果

echo $[1/0]
#输出
-bash: 1/0: 除0 (错误符号是 "0")

echo $?
#输出 1为上一条命令执行有错误,0表示没有错误
1

./hello.sh
#没有报错的话,输出0
0

最后

推荐一个零声教育学习教程,个人觉得老师讲得不错,分享给大家:[Linux,Nginx,ZeroMQ,MySQL,Redis,
fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,
TCP/IP,协程,DPDK等技术内容,点击立即学习:链接


网站公告

今日签到

点亮在社区的每一天
去签到