Jason

独立开发,自由职业


  • 分类

  • 友链

  • 关于

  • 搜索

Shell 基本运算符

发表于 2016-08-13 | 分类于 Shell

条件运算符

Tutorial: Conditions in bash scripting

数学运算

原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。
expr 是一款表达式计算工具,使用它能完成表达式的求值操作。

1
2
3
4
5
val=`expr 1 + 2`
n1=1
n2=2
echo `expr $n1 + $n2`

注意:

  • 表达式和运算符之间要有空格,例如 1+2 是不对的,必须写成 1 + 2
  • 完整的表达式要被 ` ` 包含。

另外,使用 $(()) 可对表达式进行简单计算

1
echo $((5+4)) #返回9

另外,还可使用 let 命令

阅读全文 »

Shell 传递参数

发表于 2016-08-13 | 分类于 Shell

我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n。n 代表一个数字,0 为执行的文件名(包含路径,如果有路径的话),1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推……

另外,还有几个特殊字符用来处理参数:

  • $0 为执行的文件名(包含路径,如果有路径的话)
  • $n n 为1、2、3…获取第1、2、3…个参数
  • $# 传递到脚本的参数个数
  • $* 以一个单字符串显示所有向脚本传递的参数。
  • $@ 与$*相同,区别见下面的介绍。
  • $$ 脚本运行的当前进程ID号
  • $! 后台运行的最后一个进程的ID号
  • $- 显示Shell使用的当前选项,与set命令功能相同。
  • $? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。

$* 与 $@ 区别:

  • 相同点:都是引用所有参数。
  • 不同点:只有在双引号中体现出来。假设在脚本运行时写了三个参数 1、2、3,,则 “ * “ 等价于 “1 2 3”(传递了一个参数),而 “@” 等价于 “1” “2” “3”(传递了三个参数)。

Shell 数组

发表于 2016-08-13 | 分类于 Shell

bash支持一维数组(不支持多维数组),并且没有限定数组的大小,初始化时不需要定义数组大小。
数组元素的下标

  • 由 0 开始编号,应大于或等于0
  • 可以不使用连续的下标
  • 下标的范围没有限制
  • 获取数组中的元素要利用下标

定义数组

在Shell中,用括号来表示数组,数组元素用”空格”符号分割开。定义数组的一般形式为:数组名=(值1 值2 ... 值n),例如:

1
2
3
4
5
6
7
8
array_name=(value0 value1 value2 value3)
array_name=(
value0
value1
value2
value3
)

还可以单独定义数组的各个分量:

1
2
3
array_name[0]=value0
array_name[1]=value1
array_name[n]=valuen
阅读全文 »

Shell 字符串

发表于 2016-08-13 | 分类于 Shell

字符串是shell编程中最常用最有用的数据类型。字符串可以用单引号,也可以用双引号,也可以不用引号;区别如下。

单引号

1
str='this is a string'

单引号字符串的限制:

  • 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
  • 单引号字串中不能出现单引号(对单引号使用转义符后也不行)。

双引号

1
2
your_name='qinjx'
str="Hello, I know your are \"$your_name\"! \n"

双引号的优点:

  • 双引号里可以有变量
  • 双引号里可以出现转义字符
阅读全文 »

Shell 变量

发表于 2016-08-13 | 分类于 Shell

使用变量

使用一个定义过的变量,只要在变量名前面加美元符号即可,如:

1
2
your_name="qinjx"
echo "I'm ${your_name}."

变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界。推荐给所有变量加上花括号(尤其是变量后面没有空格、而是其他字符时),这是个好的编程习惯。

只读变量

使用 readonly 命令可以将变量定义为只读变量:

1
2
3
#!/bin/bash
myUrl="http://atjason.com"
readonly myUrl
阅读全文 »
1…555556557…626
Jason

Jason

记录一位独立开发者的精进之路,分享自由职业者的生存方式。

3129 日志
9 分类
5 标签
RSS
GitHub Twitter Weibo
Links
  • Toolinbox
© 2011 - 2025 Jason 浙ICP备16002197号