Shell学习笔记(02)
Ch03.传递参数
向脚本传递三个参数,并分别输出,其中 $0 为执行的文件名(包含文件路径)
#!/bin/bash # author:菜鸟教程 # url:www.runoob.com echo "Shell 传递参数实例!"; echo "执行的文件名:$0"; echo "第一个参数为:$1"; echo "第二个参数为:$2"; echo "第三个参数为:$3";
输出结果如下:
$ chmod +x test.sh $ ./test.sh 1 2 3 Shell 传递参数实例! 执行的文件名:./test.sh 第一个参数为:1 第二个参数为:2 第三个参数为:3
特殊的参数处理:
$# | 传递到脚本的参数个数 |
$* | 以一个单字符串显示所有向脚本传递的参数。 如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。 |
$$ | 脚本运行的当前进程ID号 |
$! | 后台运行的最后一个进程的ID号 |
$@ | 与$*相同,但是使用时加引号,并在引号中返回每个参数。 如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。 |
$- | 显示Shell使用的当前选项,与set命令功能相同。 |
$? | 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。 |
#!/bin/bash # author:菜鸟教程 # url:www.runoob.com echo "Shell 传递参数实例!"; echo "第一个参数为:$1"; echo "参数个数为:$#"; echo "传递的参数作为一个字符串显示:$*";
输出:
$ chmod +x test.sh $ ./test.sh 1 2 3 Shell 传递参数实例! 第一个参数为:1 参数个数为:3 传递的参数作为一个字符串显示:1 2 3
$* 与 $@ 区别:只有在双引号中体现出来。假设在脚本运行时写了三个参数 1、2、3,,则 " * " 等价于 "1 2 3"(传递了一个参数),而 "@" 等价于 "1" "2" "3"(传递了三个参数)。
例如:
#!/bin/bash # author:菜鸟教程 # url:www.runoob.com echo "-- \$* 演示 ---" for i in "$*"; do echo $i done echo "-- \$@ 演示 ---" for i in "$@"; do echo $i done
输出结果为:
$ chmod +x test.sh $ ./test.sh 1 2 3 -- $* 演示 --- 1 2 3 -- $@ 演示 --- 1 2 3
Ch04 数组
Bash Shell 只支持一维数组(不支持多维数组),初始化时不需要定义数组大小
数组用括号来表示,元素用"空格"符号分割开
#!/bin/bash # author:菜鸟教程 # url:www.runoob.com my_array=(A B "C" D)
或者
array_name[0]=value0 array_name[1]=value1 array_name[2]=value2
读取数组
${array_name[index]
例
#!/bin/bash # author:菜鸟教程 # url:www.runoob.com my_array=(A B "C" D) echo "第一个元素为: ${my_array[0]}" echo "第二个元素为: ${my_array[1]}" echo "第三个元素为: ${my_array[2]}" echo "第四个元素为: ${my_array[3]}"
执行脚本:
$ chmod +x test.sh $ ./test.sh 第一个元素为: A 第二个元素为: B 第三个元素为: C 第四个元素为: D
获取全部元素:
#!/bin/bash # author:菜鸟教程 # url:www.runoob.com my_array[0]=A my_array[1]=B my_array[2]=C my_array[3]=D echo "数组的元素为: ${my_array[*]}" echo "数组的元素为: ${my_array[@]}"
执行脚本:
$ chmod +x test.sh $ ./test.sh 数组的元素为: A B C D 数组的元素为: A B C D
获取数组长度:
#!/bin/bash # author:菜鸟教程 # url:www.runoob.com my_array[0]=A my_array[1]=B my_array[2]=C my_array[3]=D echo "数组元素个数为: ${#my_array[*]}" echo "数组元素个数为: ${#my_array[@]}"
执行结果:
$ chmod +x test.sh $ ./test.sh 数组元素个数为: 4 数组元素个数为: 4
//×××××××××××××××××××××××××××××××××××××××××××××××××××××
//用旧电脑装了Linux Mint,本来就是打算玩玩来着,后来发现就算是日常使用,问题也越来越多。
//就比如chmod命令是需要切到root,但是切过去的话就跳转到主目录,找不到原目录了???,现在就只能建好.sh文件,然后把文件夹用root权限打开,再打开终端。
//wine一直报错...
//python的pycurl一直更新不了...
//现在也不知道该怎么下电影
//音乐的话倒是找到了网易云的版本还好了
//慢慢解决总会好的...