学习且转载地址:http://www.runoob.com/linux/linux-shell-passing-arguments.html

这个网站整理的的确不错,看着很清晰,而且内容也很全面,个人觉得比W3cSchool更接地气哈哈。由于感觉这个网站整理的很好,所以实在没有什么总结的地方,所以照搬很多东西。

 

    1、向脚本内传递参数以及脚本获取参数:

#!/bin/bash
#author zx echo "Shell param test"
echo "file name is :$0";
echo "param1 is :$1"
echo "param2 is :$2";
echo "param3 is :$3"

运行命令及结果:

root@node9:/home/zhangxu# chmod +x ./testParam.sh  root@node9:/home/zhangxu# ./testParam.sh jack rose titan
Shell param test
file name is :./testParam.sh
param1 is :jack
param2 is :rose
param3 is :titan
root@node9:/home/zhangxu#

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

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

详细见:

http://www.runoob.com/linux/linux-shell-passing-arguments.html

2、数组:

#!/bin/bash
#test array
echo "there ihave an array";
array1=(A B 123 "JACK" "ROSE");
echo "index0:${array1[0]}";
echo "index1:${array1[1]}";
echo "index2:${array1[2]}";
echo "index3:${array1[3]}";
echo "index4:${array1[4]}";
echo "all elements :${array1[*]}"
echo "all elements :${array1[@]}"
array1[0]="ACFUN";
array1[1]="BLIBLI"; echo "all elements :${array1[*]}"
echo "all elements amount :${#array1[*]}"

输出:

root@node9:/home/zhangxu# ./testArray.sh
there ihave an array
index0:A
index1:B
index2:123
index3:JACK
index4:ROSE
all elements :A B 123 JACK ROSE
all elements :A B 123 JACK ROSE
all elements :ACFUN BLIBLI 123 JACK ROSE
all elements amount :5 3、运算符:用到时打开网址照着写就行 http://www.runoob.com/linux/linux-shell-basic-operators.html 4、流程控制,也没啥必要,来回那些东西: http://www.runoob.com/linux/linux-shell-process-control.html 个人觉得下面三个比较重要:

 

Shell 函数

linux shell 可以用户定义函数,然后在shell脚本中可以随便调用。

shell中函数的定义格式如下:

[function] funname [()]{

    action;[returnint;]}

说明:

  • 1、可以带function fun() 定义,也可以直接fun() 定义,不带任何参数。
  • 2、参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。 return后跟数值n(0-255

下面的例子定义了一个函数并进行调用:

下面定义一个带有return语句的函数:

#!/bin/bash# author:菜鸟教程# url:www.runoob.com

funWithReturn(){
echo "这个函数会对输入的两个数字进行相加运算..."
echo "输入第一个数字: "
read aNum
echo "输入第二个数字: "
read anotherNum
echo "两个数字分别为 $aNum 和 $anotherNum !"return $(($aNum+$anotherNum))}
funWithReturn
echo "输入的两个数字之和为 $? !"

输出类似下面:

这个函数会对输入的两个数字进行相加运算...输入第一个数字:1输入第二个数字:2两个数字分别为1和2!输入的两个数字之和为3!

函数返回值在调用该函数后通过 $? 来获得。

注意:所有函数在使用前必须定义。这意味着必须将函数放在脚本开始部分,直至shell解释器首次发现它时,才可以使用。调用函数仅使用其函数名即可。

带参数的函数示例:

#!/bin/bash# author:菜鸟教程# url:www.runoob.com

funWithParam(){
echo "第一个参数为 $1 !"
echo "第二个参数为 $2 !"
echo "第十个参数为 $10 !"
echo "第十个参数为 ${10} !"
echo "第十一个参数为 ${11} !"
echo "参数总数有 $# 个!"
echo "作为一个字符串输出所有参数 $* !"}
funWithParam 1234567893473

6、输入输出重定向:

Shell 输入/输出重定向

大多数 UNIX 系统命令从你的终端接受输入并将所产生的输出发送回​​到您的终端。一个命令通常从一个叫标准输入的地方读取输入,默认情况下,这恰好是你的终端。同样,一个命令通常将其输出写入到标准输出,默认情况下,这也是你的终端。

重定向命令列表如下:

命令说明
command > file将输出重定向到 file。
command < file将输入重定向到 file。
command >> file将输出以追加的方式重定向到 file。
n > file将文件描述符为 n 的文件重定向到 file。
n >> file将文件描述符为 n 的文件以追加的方式重定向到 file。
n >& m将输出文件 m 和 n 合并。
n <& m将输入文件 m 和 n 合并。
<< tag将开始标记 tag 和结束标记 tag 之间的内容作为输入。

7、文件包含:

Shell 文件包含

和其他语言一样,Shell 也可以包含外部脚本。这样可以很方便的封装一些公用的代码作为一个独立的文件。

Shell 文件包含的语法格式如下:

. filename   # 注意点号(.)和文件名中间有一空格或

source filename

实例

创建两个 shell 脚本文件。

test1.sh 代码如下:

#!/bin/bash# author:菜鸟教程# url:www.runoob.com

url="http://www.runoob.com"

test2.sh 代码如下:

#!/bin/bash# author:菜鸟教程# url:www.runoob.com#使用 . 号来引用test1.sh 文件../test1.sh

# 或者使用以下包含文件代码# source ./test1.sh

echo "菜鸟教程官网地址:$url"

接下来,我们为 test2.sh 添加可执行权限并执行:

$ chmod +x test2.sh
$ ./test2.sh
菜鸟教程官网地址:http://www.runoob.com

 

 
05-26 21:02