shell使用小结(更新中...)

Shell类型

  • Bourne Shell(/usr/bin/sh或/bin/sh)
  • Bourne Again Shell(/bin/bash)
  • C Shell(/usr/bin/csh)
  • K Shell(/usr/bin/ksh)
  • Shell for Root(/sbin/sh)

Bash Shell运行方式

注意,一定要写成 ./test.sh,而不是 test.sh,运行其它二进制的程序也一样,直接写 test.sh,linux 系统会去 PATH 里寻找有没有叫 test.sh 的,而只有 /bin, /sbin, /usr/bin,/usr/sbin 等在 PATH 里,你的当前目录通常不在 PATH 里,所以写成 test.sh 是会找不到命令的,要用 ./test.sh 告诉系统说,就在当前目录找。

bash test.sh
./test.sh
sh test.sh
source test.sh

Shell 变量

注意,变量名和等号之间不能有空格;

使用变量

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

name="chen"
echo $name

Shell 传递参数

我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$nn 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推;

echo "执行的文件名:$0"
echo "第一个参数:$1"
echo "第二个参数:$2"
echo "第三个参数:$3"

为脚本赋予可执行权限,并执行脚本;

chmod +x test.sh 
./test.sh 1 2 3
参数处理 说明
$# 传递到脚本的参数个数
$* 以一个单字符串显示所有向脚本传递的参数。
如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
$$ 脚本运行的当前进程ID号
$! 后台运行的最后一个进程的ID号
$@ 与$*相同,但是使用时加引号,并在引号中返回每个参数。
如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。
$- 显示Shell使用的当前选项,与set命令功能相同。
$? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误

$* 与 $@ 区别:

扫描二维码关注公众号,回复: 3604610 查看本文章
  • 相同点:都是引用所有参数。
  • 不同点:只有在双引号中体现出来。假设在脚本运行时写了三个参数 1、2、3,,则 " * " 等价于 "1 2 3"(传递了一个参数),而 "@" 等价于 "1" "2" "3"(传递了三个参数)。

shell数组

Bash Shell 只支持一维数组(不支持多维数组),Shell 数组用括号来表示,元素用"空格"符号分割开;

array=(A D B D "E")

读取数组,数组下标从0开始;

${array_name[index]}

使用@ 或 * 可以获取数组中的所有元素,#和@获取数组长度;

echo "获取数组中第一个元素: ${array[0]}"

echo "获取数组中所有的元素: ${array[@]}"
echo "获取数组中所有的元素: ${array[*]}"

echo "获取数组长度: ${#array[@]}"
echo "获取数组长度: ${#array[*]}"

Shell 运算符

Shell 和其他编程语言一样,支持多种运算符:

  • 算数运算符
  • 关系运算符
  • 布尔运算符
  • 字符串运算符
  • 文件测试运算符

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

#!/bin/bash

sum=`expr 1 + 2`
echo "两数相加为 : $sum"
sub=`expr 3 - 1`
echo "两数相减为 : $sub"

注意

  • 表达式和运算符之间要有空格,例如 1+2 是不对的,必须写成 1 + 2,这与我们熟悉的大多数编程语言不一样。
  • 完整的表达式要被 ` ` 反引号包含,注意这个字符不是常用的单引号,在 Esc 键下边。

算术运算符

运算符 说明 举例
+ 加法 `expr $a + $b` 
- 减法 `expr $a - $b` 
* 乘法 `expr $a \* $b` 
/ 除法 `expr $b / $a` 
% 取余 `expr $b % $a` 
= 赋值 a=$b 将把变量 b 的值赋给 a。
== 相等。用于比较两个数字,相同则返回 true。 [ $a == $b ] 
!= 不相等。用于比较两个数字,不相同则返回 true。 [ $a != $b ] 

注意:

  • 条件表达式要放在方括号之间,并且要有空格(表达式与变量之间、表达式与判断符之间都要有空格),例如: [$a==$b] [$a == $b]都是错误的,必须写成 [ $a == $b ]

布尔运算符

运算符 说明 举例
! 非运算,表达式为 true 则返回 false,否则返回 true。 [ ! false ] 
-o 或运算,有一个表达式为 true 则返回 true。 [ $a -lt 20 -o $b -gt 100 ] 
-a 与运算,两个表达式都为 true 才返回 true。 [ $a -lt 20 -a $b -gt 100 ] 

逻辑运算符

运算符 说明 举例
&& 逻辑的 AND [[ $a -lt 100 && $b -gt 100 ]] 
|| 逻辑的 OR [[ $a -lt 100 || $b -gt 100 ]] 

注意

  • 逻辑运算需要两个中括号[[ ]],这样的写法是错误的: [ $a -lt 100 || $b -gt 100 ],正确写法:[[ $a -lt 100 || $b -gt 100 ]] 

猜你喜欢

转载自blog.csdn.net/qq_34500270/article/details/82992438
今日推荐