LINUX学习(1)

read命令从键盘读取变量的值,通常用在shell脚本中与用户进行交互的场合。该命令可以一次读取多个变量的值,变量和输入的值都需要使用空格隔开。

语法

read(选项)(参数)

选项

-p:指定读取值时的提示符;

-t:指定读取值时等待的时间(秒)。

read -p "enter:" -t 10 a b

enter:1 5

echo $a $b

 

在bash shell中,$( )与` `(反引号)都是用来做命令替换(command substitution)用的。

一般情况下,$var与${var}作用相同。但是用${ }会比较精确的界定变量名称的范围

$ A=B
$ echo $AB
原本是打算先将$A的结果替换出来,然后再补一个B字母于其后,但在命令行上,真正的结果却是只会替换变量名称为AB的值出来。
使用${ }就没问题了:
$ echo ${A}B
BB

 

运行shell脚本

1、作为可执行程序

将代码保存为 sh01.sh,并 cd 到相应目录:

chmod +x ./sh01.sh  #使脚本具有执行权限
./sh01.sh           #执行脚本

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

2、以bash进程来执行,通过 bash shell.sh 或者sh shell.sh 。

 

 

获取字符串长度

string="abcd"
echo ${#string} #输出 4

提取子字符串

以下实例从字符串第 2 个字符开始截取 4 个字符:

string="runoob is a great site"
echo ${string:1:4} # 输出 unoo

查找子字符串

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

string="runoob is a great company"
echo `expr index "$string" is`  # 输出 8   "$string" 要加双引号


定义数组

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

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

例如:

array_name=(value0 value1 value2 value3)  //一般用空格和回车!

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

echo ${array_name[@]}



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

实例

以下实例我们向脚本传递三个参数,并分别输出,其中 $0 为执行的文件名:

#!/bin/bash

echo "Shell 传递参数实例!";
echo "执行的文件名:$0";
echo "第一个参数为:$1";
echo "第二个参数为:$2";
echo "第三个参数为:$3";

执行 bash a.sh 1 2 3

Shell 传递参数实例! 执行的文件名:a.sh 第一个参数为:1 第二个参数为:2 第三个参数为:3



expr 是一款表达式计算工具,使用它能完成表达式的求值操作。
#!/bin/bash

val=`expr 2 + 2`
echo "两数之和为 : $val" //4

表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2,这与我们熟悉的大多数编程语言不一样。

完整的表达式要被 ` ` 包含,注意这个字符不是常用的单引号,在 Esc 键下边。



== 相等。用于比较两个数字,相同则返回 true。
条件表达式要放在方括号之间,并且要有空格,例如: [$a==$b] 是错误的,必须写成 [ $a == $b ]
if [ $a == $b ]
then
   echo "a 等于 b"
fi

乘号(*)前边必须加反斜杠(\)才能实现乘法运算,在expr语句中。

在 MAC 中 shell 的 expr 语法是:$((表达式)),此处表达式中的 "*" 不需要转义符号 "\" ,另一种形式。

 

-o  或运算,有一个表达式为 true 则返回 true。

-a  与运算,两个表达式都为 true 才返回 true。

&&  逻辑的 AND

||    逻辑的 OR

 

=    检测两个字符串是否相等,相等返回 true。

if [ $a = $b ]
then
   echo "$a = $b : a 等于 b"
else
   echo "$a = $b: a 不等于 b"
fi

检测字符串是否为空
if [ $a ]
then
   echo "$a : 字符串不为空"
else
   echo "$a : 字符串为空"
fi
 
echo -e "OK! \n"    # -e 开启转义 没有-e,直接输出\n


1、&&

  方式:command1 && command2

  如果command1执行成功,则执行command2

 

2、||

方式:command1 || command2

如果command1执行失败,则执行command2

 


 
 

 

posted @ 2017-05-08 15:52  home普通的人  阅读(172)  评论(0编辑  收藏  举报