shell脚本体系知识(1)

举报
小云悠悠zZ 发表于 2023/01/19 16:59:27 2023/01/19
【摘要】 Bash 只支持单行注释,使用*#*开头的都被当作注释语句,通过 Bash 的一些特性,可以取巧实现多行注释。

Shell 脚本基础

Bash 注释
Bash 只支持单行注释,使用#开头的都被当作注释语句:

# 整行注释
echo hello world # 行尾注释

通过 Bash 的一些特性,可以取巧实现多行注释:

: '
注释1
注释2
'

: <<'EOF'
注释1
注释2
EOF

____='
注释1
注释2

Bash 基本数据类型
Bash 中基本数据类型只有字符串类型,连数值类型都没有 (declare -i 可强制声明数值类型)。

# 都会当作字符串
echo haha
echo 1234

Bash 字符串串联
Bash 中字符串的串联操作,直接将两段数据连接在一起即可,不需要任何操作符。

例如:

echo "junma""jinlong"
echo 1234 5678

命令基本知识

变量赋值和引用变量

a=3
echo $a

a="www.junmajinlong.com"
echo $a

a='hello world'
echo $a

Shell 中可以引用未定义的变量:

echo $xyzdefabc

可以定义空变量:

a=
echo $a

变量替换

变量替换是指在命令开始执行前,Shell 会先将变量的值替换到引用变量的位置处。

例如:

a="hello"
echo $a world

在 echo 命令开始执行前,Shell 会取得变量 a 的值 hello,并将它替换到命令行的 $a 处。于是,在 echo 命令开始执行时,命令行已经变成:

echo hello world

除了变量替换,Shell 还会做其它替换:

  • 命令替换
  • 进程替换
  • 算术运算替换
  • 大括号扩展
  • 波浪号扩展
  • 路径扩展

这些扩展和替换,都是 Shell 在调用命令之前就完成的,这和其它语言解析代码的方式不一样。

后面会详细解释 Shell 是如何做命令行解析的,如果不掌握命令行解析,当遇到命令行语法错误后很可能会花掉大量无谓的时间去调试命令。而掌握命令行解析后,就会对命令生命周期了如执掌,不敢说一次就能写对所有命令行,但能节省大量调试时间,对写命令行和写脚本的能力也会上升一个层次。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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