Linux Shell笔记1 shell编程基础
程序员文章站
2022-07-12 12:10:57
...
shell语言是解释型非强类型语言. Linux Shell不区分变量的类型, 一切都是字符串类型, 变量名不能是数字开头. 变量长度没有限制, 变量可以进行比较操作和整数操作. 整数操作取决于字符串的值是否是数字.
变量的引用需要用$
, 且$varname
一般和${varname}
等效, 但是注意有时变量可能会出现混淆的情况, 此时应该用第二种. shell中的所有变量都是全局的, 即一个shell进程只要声明变量, 那么这个shell进程就可以使用这个变量, 如果想要是局部的, 需要前面添加关键字local
. 没有初始化的变量是null类型, 可以看成数字0
shell有强引用和弱引用, 分别是' '
和" "
符号. 强引用会把所有的符号解释成字符, 而弱引用会把变量替换成相应的值, 比如:
#!/bin/sh
a=1
echo '$a'
echo "$a"
执行脚本显示:
$a
1
注意shell关于变量的3个关键词:
-
unset
用于删除一个变量, 删除后就不存在了 -
let
let 命令是 BASH 中用于计算的工具,用于执行一个或多个表达式,变量计算中不需要加上$
来表示变量。如果表达式中包含了空格或其他特殊字符,则必须引起来。 -
export
把变量导出为环境变量, 但是仅仅在当前脚本生效,
let
的例子:
#!/bin/bash
a=1
a=a+1
echo $a
b=1
let "b=b+1"
let b=b+1
echo $b
输出
a+1
3
可以看出, a变成了字符串了, 而b还是执行加法. shell中出现数值计算, 最好使用let
.let
支持i++
和i--
IO重定向操作, 需要使用>
<
或者是 >>
<<
, 前两个是覆盖写, 后两个是追加.
Linux直接执行shell命令或者文件的时候, 是创建子进程执行, 子进程执行完毕后, 再返回到主进程. 如果需要在当前进程执行shell脚本, 需要执行source xxx.sh
, 这个命令一般是执行配置文件时候使用的.
还有一些特殊的作用的命令符号参数:
-
$#
输出变量的个数 -
$?
输出上条命令的结束值 -
$0
输出命令的名字 -
$*
输出命令的所有参数
上一篇: Linux Shell编程基础
下一篇: shell中的case语句