Shell入门学习(一天掌握Shell基础)


前言

为了坚持学习Shell脚本,以此来记录每日学习情况。纯小白,本文只作个人笔记使用,如有雷同,纯属巧合,联系侵删。学习的是尚硅谷的Shell视频

一、shell解释器

[root@localhost ~]# cat /etc/shells 
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
  • Centos默认的解析器是bash
[root@localhost bin]# echo $SHELL
/bin/bash

二、脚本入门

1.脚本格式

  • 脚本以 #!/bin/bash 开头

例如:第一个Shell脚本 HelloWorld:

[root@localhost ~]# cat a.sh 

#!/bin/bash
 
echo "HelloWorld"  
  • 脚本常用执行方式:
  1. 采用bash或sh+脚本的相对路径或绝对路径
[root@localhost ~]# bash a.sh 
HelloWorld
[root@localhost ~]# sh a.sh 
HelloWorld
  1. 采用 ./ +脚本 来执行脚本 (必须具有可执行权限+X)
[root@localhost ~]# ./a.sh
-bash: ./a.sh: Permission denied
[root@localhost ~]# ll
total 8
-rw-------. 1 root root 1259 May 27 05:56 anaconda-ks.cfg
-rw-r--r--. 1 root root   34 Jul 28 21:34 a.sh
[root@localhost ~]# chmod 777 a.sh 
[root@localhost ~]# ./a.sh
HelloWorld

又如:第二个Shell脚本 多命令处理

任务: 在/home/test/目录下创建一个123.txt,在123.txt中增加 "ni hao"

[root@localhost home]# ll
total 0
[root@localhost home]# cat b.sh 
#!/bin/bash

cd /home/
mkdir test
touch /home/test/123.txt 
echo "ni hao" >> /home/test/123.txt 

2.Shell变量

1.系统变量

  • $HOME
  • $PWD (当前目录)
  • $SHELL (默认解析器)
  • $USER (当前用户)

2. 自定义变量

  • 基本语法:

(1) 变量=值

[root@localhost home]# A=1       ==等号两边没有空格==
[root@localhost home]# echo $A
1

(2) 撤销变量: unset 变量

[root@localhost home]# unset A
[root@localhost home]# echo $A

[root@localhost home]# 

(3) 声明静态变量: readonly 变量

[root@localhost ~]# readonly C=1
[root@localhost ~]# echo $C
1
[root@localhost ~]# unset C
-bash: unset: C: cannot unset: readonly variable
[root@localhost ~]# 
  • 变量定义规则:

    (1)变量名称可以由字母、数字、下划线组成,不能以数字开头。
    (2)等号两侧不能有空格
    (3)变量值若有空格,则用双引号或单引号括起来

(4)把变量提升为全局变量:export 变量名 (可供其他Shell程序使用)

3. 特殊变量

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

[root@localhost ~]# cat a.sh 
#!/bin/bash
 
echo "HelloWorld"  
echo "$0 $1 $2"
[root@localhost ~]# bash a.sh  12 cd
HelloWorld
a.sh 12 cd
  • $#
作用:获取所有输入参数个数,常用于循环

[root@localhost ~]# cat a.sh 
#!/bin/bash
 
echo "HelloWorld"  
echo "$0 $1 $2"
echo "$#"
[root@localhost ~]# bash a.sh  12 cd
HelloWorld
a.sh 12 cd
2        == 2个参数 ==
  • $*
作用:代表命令行中所有参数,$* 把所有参数看成一个整体
  • $@
作用:代表命令行中所有参数,$@ 把每个参数区分对待
  • $?
作用:最后一次执行的命令的返回状态。变量值为0,证明上一个命令正确执行;变量值非0,则不正确

[root@localhost ~]# bash a.sh  12  ab2
HelloWorld
a.sh 12 ab2
2
12 ab2
12 ab2
[root@localhost ~]# echo $?
0
[root@localhost ~]# cd /hoeme/
-bash: cd: /hoeme/: No such file or directory
[root@localhost ~]# echo $?
1

3. 运算符

  • 基本语法

(1)“$((运算式))” 或 “$[]

(2) expr +,-,\*,/,% (加、减、乘、除、取余) expr运算符之间要有空格

[root@localhost ~]#  echo $((2+3))
5
[root@localhost ~]# echo $[2+3]
5
[root@localhost ~]# expr 2+3     == 必须有空格 ==
2+3
[root@localhost ~]# expr 2 + 3
5

例如:计算 (1+4)*6

[root@localhost ~]# expr `expr 1 + 4` \* 6
30
[root@localhost ~]# echo $[(1+4)*6]
30

4. 条件判断

1. 基础语法

  • [ 条件 ] (condition 条件前后要有空格) 条件非空即为True。例如: []返回 False,[ abc ]返回 True

2.常用判断条件

(1)两个整数之间比较

  • =:字符串比较 —— !=(不等于)
  • -lt:小于(less than)
  • -le:小于等于(less equal)
  • -eq:等于(equal)
  • -ne:不等于(not equal)
  • -gt:大于(greater than)
  • -ge:大于等于(greater equal)

(2)按文件权限比较

  • -r: 读权限 -w 写权限 -x 执行权限

(3)按文件类型比较

  • -f 文件存在且是常规文件 file
  • -e 文件存在
  • -d 文件存在且是一个目录
[root@localhost ~]# [ 23 -gt 12 ]     ==判断23是否大于12==
[root@localhost ~]# echo $?          == 返回值为 0 ,说明上一条命令正确执行 ==
0
[root@localhost ~]# touch test.sh
[root@localhost ~]# ll
total 0
-rw-r--r--. 1 root root 0 Jul 30 09:23 test.sh
[root@localhost ~]# [ -x test.sh ]     == 判断 test.sh 是否具有执行权限 ==
[root@localhost ~]# echo $?
1
[root@localhost ~]# [ -r test.sh ]
[root@localhost ~]# echo $?
0

(4)多条件判断

  • &&:表示前一条命令执行成功时,才执行后一条命令
  • ||:表示上一条命令执行失败,才执行下一条命令

5. 流程控制

  • if 判断
if [ 条件判断式 ];then   
   程序
fi           ==判断结束==

或者

if [ 条件判断式 ]
   then
     程序
fi

if 后要有空格

任务: 输入一个数字,如果是1,则输出true;如果是2,则输出false;如果是其他,则什么也不输出。

[root@localhost ~]# cat if.sh 
#!/bin/bash

if [ $1 -eq 1 ];then

 echo "true"

elif [ $1 -eq 2 ];then
 
 echo "false"

fi
[root@localhost ~]# sh if.sh  1
true
[root@localhost ~]# sh if.sh  2
false
[root@localhost ~]# sh if.sh  3
[root@localhost ~]# 
  • case语句

(1)基本语法:

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值