Linux Shell & scp指令

Linux Shell

一个简单的shell文件示例:
#!/bin/bash

echo "Hello World !"

 

SHELL定义变量示例:your_name="test_name"

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

使用变量示例:your_name=" test_name "

echo $your_name

echo ${your_name}

变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界

 

已定义的变量,可以被重新定义,如:

your_name=" test_name "

echo $your_name

your_name=" test_name2"

echo $your_name

 

使用readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。

下面的例子尝试更改只读变量,结果报错:

#!/bin/bash

myUrl="http://www.baidu.com"

readonly myUrl

myUrl=http://www.google.com

 

使用 unset 命令可以删除变量。语法:

unset variable_name

变量被删除后不能再次使用。unset 命令不能删除只读变量

 

SHELL拼接字符串(直接拼接字符串变量)

your_name=" test_name "

greeting="hello,"$your_name" !"

greeting_1="hello, ${your_name}!"

echo $greeting $greeting_1

 

SHELL获取字符串长度(使用#号操作)

string="abcd"

echo ${#string} #输出4

SHELL提取子字符串

 

以下实例从字符串第 2 个字符(索引为1)开始截取 4 个字符:

string="runoob is a great site"

echo ${string:1:4} # 输出 unoo

 

SHELL查找子字符串

查找字符 "i 或s" 的位置:

string="runoob is a greatcompany"

echo `expr index "$string"is`  # 输出 8

 

SHELL数组相关:

bash支持一维数组(不支持多维数组),并且没有限定数组的大小

在Shell中,用括号来表示数组,数组元素用"空格"符号分割开。定义数组的一般形式为:

数组名=(值1 值2 ... 值n)

读取数组元素值的一般格式是:

${数组名[下标]}

例如:

valuen=${array_name[n]}

使用@符号可以获取数组中的所有元素,例如:

echo ${array_name[@]}

获取数组长度的方法与获取字符串长度的方法相同,例如:

# 取得数组元素的个数

length=${#array_name[@]}

# 或者

length=${#array_name[*]}

# 取得数组单个元素的长度

lengthn=${#array_name[n]}

 

SHELL外部引用:

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

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

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

source filename

 

shell函数示例:

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

#!/bin/bash

demoFun(){

   echo "这是我的第一个 shell 函数!"

}

echo "-----函数开始执行-----"

demoFun

echo "-----函数执行完毕-----"

输出结果:

-----函数开始执行-----

这是我的第一个 shell 函数!

-----函数执行完毕-----

 

在Shell中,调用函数时可以向其传递参数。在函数体内部,通过 $n 的形式来获取参数的值,例如,$1表示第一个参数,$2表示第二个参数...

注意,$10 不能获取第十个参数,获取第十个参数需要${10}。当n>=10时,需要使用${n}来获取参数。

 

还有SHELL很有用的一个命令test:

Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。

实例演示:

num1=100

num2=100

if test $[num1] -eq $[num2]

then

   echo '两个数相等!'

else

   echo '两个数不相等!'

fi

输出结果:

两个数相等!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章