Shell 基本语法 | 学习笔记

简介: 快速学习 Shell 基本语法。

开发者学堂课程【Shell 编程入门到精通Shell 基本语法】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/453/detail/5595


Shell 基本语法


内容简介:

一、Shell 基本语法

二、变量

三、表达式

四、判断语句

五、if表达式

六、综合实例

 

一、 Shell 基本语法

(1)简单 shell 构成方法

#!/bin/bash  #!跟 shell 命令的完全路径。

作用:显示后期命令以哪种 shell 来执行这些命令。如不指  shell ,以当前 shell 作为执行的 shell 。

[root@xuegod63 test]# ll/bin/sh

lrwxrwxrwx.l root rooot 4 Dec 18  2012/bin/sh -> bash

#This is to show what a example looks like.以  shell  中以#开始头表示,整个行被当作一个注释。

执行时被忽略。

Shell 程序一般以  .sh 结尾。

(2)创建 shell 程序的步骤

第一步:创建一个包含命令和控制结构的  shell  文件。

第二步:修改这个文件的权限使它可以执行。

使用  chmod +x

第三步:执行

方法1:√example01.sh

方法2: 使用绝对路径 [root@xuegod63 test]# /root/test/example01.sh

方法3:[root@xuegod63 test]# bash example01.sh

 

二、变量

(1)变量的赋值方法

在使用变量值时,要在变量名前加上前缀$;变量赋值时赋值号”=两边应该没有空格。

例1:

[root@xuegod63 test]# A=aaa

[root@xuegod63 test]# A = aaa

Bash:A:command not found

例2:可以利用变量和其他字符组成一个新的字符串

[root@xuegod63 test]# MYDIR=/home/mk

[root@xuegod63 test]# echo $MYDIR/zhangsan

/home/mk/zhangsan

[root@xuegod63 test]# DAY=mon

[root@xuegod63 test]# echo Today is $DAYday

Today is

[root@xuegod63 test]# echo Today is $DAY day

Today is mon day

[root@xuegod63 test]# echo Today is ${DAY}day

Today is Monday 

例3:给变量赋值多个单词

[root@xuegod63 test]# NAME=“mike Ron

[root@xuegod63 test]# echo $NAME

mike Ron

[root@xuegod63 test]# NAME=shen mk

[root@xuegod63 test]# echo $NAME

shen mk

[root@xuegod63 test]# NAME=mike Ron $NAME

[root@xuegod63 test]# echo $NAME

mike Ron shen mk

[root@xuegod63 test]# NAME=mike Ron $NAME

[root@xuegod63 test]# echo $NAME

mike Ron $NAME

(2)列出所有的变量

set  命令

例:

[root@xuegod63 test]# set | grep DAY

DAY=mon

(3)单引号与双引号在变量中的区别

单引号之间的内容原封不动地指定给了变量;双引号取消了空格的作用,特殊符号的含义保留。

(4)删除变量

[root@xuegod63 test]# echo $NAME

mike Ron $NAME

[root@xuegod63 test]# unset NAME

[root@xuegod63 test]# echo $NAME

(5) 特殊变量和位置变量

位置变量需知: $0  这个程序的文件名  example.sh  ;  $n  这个程序的第  n  个参数值,n =1..N。特殊变量需知: $*  这个程序的所有参数; $#  这个程序的参数个数; $$  这个程序的 PID ; $!执行上一个后台程序的 PID ; $? 执行上一个指令的返回值。

 

三、表达式

(1) Read  命令

可以使  shell  命令有交互,从键盘读入数据,赋给变量。

(2) expr  命令

作用:  Shell  变量的算数运算;  expr  命令:对整数型变量进行算术运算;语法:

expr  表达式  #注意 数据与运算符之间要有空格;加减乘除中,乘法需要加\*。

(3)复杂运算

[root@xuegod63 test]# var4=8

[root@xuegod63 test]# expr `expr 5 + 11`/$var4

2


四、判断语句

(1)字符串和变量

test  $str1 == $str2  是否相等

test  $str1!=$str2   是否不相等

test  $str1  如果 $str1 不为空,则返回结果为真

test  -n $str1 如果字符串长度不为零,则返回结果为真

test  -z $str1 如果字符串长度为零,则返回结果为真

需注意:在引用 $str1 和 $str2 时一定要加双引号

(2)整数

test  int1 -eq  int2

test  int1 -ge  int2   >=

test  int1 -gt  int2   >

test  int1  -le int2   <=

test  int1  -lt int2   <

test  int1 -ne  int2

说明:也可以省略 test 写成: [ int1   -lt   int2 ]

(3)文件

test   -d   file   #测试结果是否为目录

test   -f  file

test   -x   file

test   -r   file

test   -w   file

test   -e   file   测试文件是否存在

test   -s    file   测试大小是否为空。是否为空文件

说明:

test   -x   file  简写成: [ -x file ]

 

五、if表达式

(1)if语句

 

image.png

语法:

if 条件

then

语句

fi

扩展:分号,表示两个两个命令写在一行,互不影响。

例:

cat if.sh

#!/bin/bash

echo if test

if [ -x /bin/ls ];then

/bin/ls

fi

echo = = = = = = = = = = = = = = =

if[ -x /bin/ls ]

then

/bin/ls

fi

运行结果:

[root@xuegod63 test]# ./if.sh

if test

example01.sh  expr.sh  if.sh  read.sh  z1.sh  z.sh

= = = = = = = = = = = = = = = = = =

example01.sh  expr.sh  if.sh  read.sh  z1.sh  z.sh

(2)if/else 用法 

image.png

语法:

if 条件1 ; then

命令1

else

命令2:

Fi

(3)多个条件的联合

-a 或 && :逻辑与,仅当两个条件都成立时,结果为真

-o 或 || :逻辑或。两个条件有一个成立,结果为真

(4)更复杂的 if 语句

语法:

if 条件1 ;then

命令1

elif 条件2 ;then

命令2

elif 条件3 ;then

命令3

else

命令4

fi

 

六、综合实例

[root@xuegod63 test]# cat elif.sh

#!/bin/bash

echo input a file name:

read file_name

if [ -d $file_name ];then

echo $file_name is a dir

elif [ -f $file_name ];then

echo $file_name is file

elif [ -c $file_name -o -b $file_name ];then

echo $file_name is a device file

else

echo $file_name is an unknow file

fi

相关文章
|
7月前
|
Shell Linux C++
Linux C/C++ 开发(学习笔记二):Shell脚本编程案例
Linux C/C++ 开发(学习笔记二):Shell脚本编程案例
111 0
|
3月前
|
Shell Linux
Linux shell编程学习笔记30:打造彩色的选项菜单
Linux shell编程学习笔记30:打造彩色的选项菜单
|
3月前
|
Shell Linux
Linux shell编程学习笔记82:w命令——一览无余
Linux shell编程学习笔记82:w命令——一览无余
|
3月前
|
存储 Java Shell
shell学习笔记(详细整理)
这篇文章是一份详细的Shell学习笔记,涵盖了Shell的基础知识、脚本编写、变量、运算符、条件判断、流程控制、函数以及常用Shell工具的使用。
52 1
|
3月前
|
Shell
Shell脚本有哪些基本语法?
【9月更文挑战第4天】
69 18
|
7月前
|
Shell 程序员 数据安全/隐私保护
shell 脚本 if-else判断 和流程控制 (基本语法|基础命令)
shell 脚本 if-else判断 和流程控制 (基本语法|基础命令)
|
7月前
|
存储 Unix Shell
shell语法总结
以上是Shell脚本语言的基本要点,它可以帮助你在命令行中自动化执行任务和操作系统。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
40 3
|
7月前
|
Shell Perl
shell学习(十) 【shell awk基本语法】
shell学习(十) 【shell awk基本语法】
35 1
|
7月前
|
监控 Shell
shell学习(五) 【循环控制continue,break、while 语法】
shell学习(五) 【循环控制continue,break、while 语法】
41 0
|
7月前
|
Shell 应用服务中间件 开发工具
shell 学习(二) shell语法【特殊字符、转义字符、shell 字体颜色和字体背景】
shell 学习(二) shell语法【特殊字符、转义字符、shell 字体颜色和字体背景】
39 0