shell脚本体系知识(1)
【摘要】 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)