shell script快速入门-基础语法

举报
彭世瑜 发表于 2021/08/14 01:13:40 2021/08/14
【摘要】 第一个脚本 sh01.sh #!/bin/bash echo "hello"12 执行bash sh01.sh 区别 source: 父进程中执行 bash:子进程中执行 12 编辑器 推荐使用sublime编辑器: sublime配置shell脚本解释器 实例 实例 1:姓+名->姓名 #!/bin/bash # program: inpu...

第一个脚本

sh01.sh

#!/bin/bash
echo "hello"
  
 
  • 1
  • 2

执行bash sh01.sh

区别

source: 父进程中执行
bash:子进程中执行

  
 
  • 1
  • 2

编辑器

推荐使用sublime编辑器: sublime配置shell脚本解释器

实例

实例 1:姓+名->姓名

#!/bin/bash
# program:  input firstname and lastname, output fullname
# data: 2018-07-11
# author: peng shiyu

read -p "input your firstname:" firstname
read -p "input your lastname:" lastname
echo "your fullname is: $firstname $lastname"
  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

说明:
第一行 #! 声明shell
其余 # 注释
开头应该尽量说明文件功能

实例 2:用当前日期创建文件

#!/bin/bash
# program: create file by date
# date: 2018-07-12
# author: peng shiyu

echo "create start..."

# 文件名
filename="file-"
date1=$(date +%Y%m%d)
file1="${filename}${date1}.txt"

# 创建文件
touch $file1
echo "create end!"
  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

基础语法

#!/bin/bash
# 上面这句指定脚本

echo "hello  world"
echo "你好,世界!"

# 这是注释

# 定义变量, 等号前后不能有空格
name="Tom"
age=12

# 使用变量, 三种方式
echo $name # Tom
echo ${name} # Tom
echo "${name}"  # Tom

# 删除变量, 打印出空值
unset name
echo $name  # 

# 字符串, 单引号(原样输出),双引号(变量和转义),不使用
person1=Jack
person2='杰克'
person3="Jack${age}"

echo $person1  # Jack
echo $person2  # Jack
echo $person3  # Jack12

# 获取字符串的长度
echo ${#person1}  # 4
echo ${#person2}  # 6

# 定义数组
list=("小仓" "小井" "小空")

# 数组分量单独赋值
list[3]="小泽"

# 读取数组元素
echo ${list[0]}  # 小仓  
echo ${list[1]}  # 小井
echo ${list[2]}  # 小空
echo ${list[3]}  # 小泽

# 获取数组所有元素
echo ${list[*]}  # 小仓 小井 小空 小泽

# 获取数组元素个数
echo ${#list[@]}  # 4
echo ${#list[*]}  # 4

# 运算符 表达式和运算符之间要有空格
# 关系运算符 -eq -ne -gt -lt -ge -le 
# 布尔运算符 && ||
# 字符串运算符 = != -z(长度为0返回true)-n(长度不为0返回true)str(字符串不为空返回true)

# 流程控制 if语句 注意空格
a=1
b=2

if [ $a -eq $b ] then echo "a == b"

elif [ $a -gt $b ] then echo "a > b"

else echo "a < b"

fi
# a < b

# 流程控制 for循环
for i in 1 2 3 4 5 do echo "line:${i}" done
# line:1 line:2 line:3 line:4 line:5

for (( i=0; i<5; i++ )) do echo "new line: ${i}" done
# new line: 0 new line: 1 new line: 2 new line: 3 new line: 4 

# 流程控制 while循环
i=1
while (( $i<5)) do echo "i=${i}" let "i++" done

# i=1 i=2 i=3 i=4

# 无限循环 for (( ; ; ))
# while : do command done
# while true do command done

# break跳出循环;continue继续下一次循环

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105

参考
Shell学习快速入门篇

文章来源: pengshiyu.blog.csdn.net,作者:彭世瑜,版权归原作者所有,如需转载,请联系作者。

原文链接:pengshiyu.blog.csdn.net/article/details/81018926

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。