shell编程基础知识(二)--各种代换

----来源于网络整理。

1、shell编程只有一种数据类型:字符串类型

2、变量:

1)环境变量:(类似全局变量)

printenv  显示当前shell的环境变量(或者  env   命令)

2)本地变量:(类似局部变量)

可以自己定义变量:

VAR=hello     ----->定义了一个变量---->默认是本地变量

echo  $VAR     ----->打印变量的值,变量前面要加$

将本地变量变为环境变量:

export  VAR

env |grep $VAR  -------->查看变量,已经能看到了。

 有无$的区别:有的话,找的是变量的值,没有的话,找的是变量的名。

unset 变量   ------->删除定义的本地变量或环境变量。

3、文件名代换

*  任意多字符

?匹配一个字符

[] 匹配括号中任意一个字符的一次出现-----[]只占一个字符

ls  file[0-9].c

4、命令代换

方法1:“`”----tab建上的那个反引号

VAL=`date`

这样 echo $VAL   就能执行date 命令 

方法2:将命令用$()括起来

VAL=$(date)

5、算数代换

VAL=10

echo   $(($VAL+1))

echo   $((VAL+1))

echo   $[VAL+1]    -------->最简单

echo   $[$VAL+1]

四种方法效果一样。

echo  $[2#10+1]   二进制10 +十进制1

6、转义字符

文件名中有特殊字符需要转义  touch  \$file

rm 的时候,也需要在文件名中加转义字符

特殊情况:

touch  ---abc   ------>带-的情况

方法一:

touch  ./---abc

rm  ./---abc                ----->否则删不掉。

方法二:

touch -- -abc 

rm  -- -abc

7、单引号 

当输出的字符串需要添加“”的时候,此时就需要用单引号把字符串引起来(使用转义字符也能做到),因为单引号会将引起来的内容原样输出。

单引号,会将其中的内容原样输出,即便是变量,也不会当做变量

 

8、双引号

双引号一般情况下是 与  不加双引号的情况一样的。

双引号和单引号的嵌套:  要原样输出双引号,则需要单引号来引;要原样输出单引号,则需要双引号来引;

双引号中引的是变量,会输出变量的值(因为跟不加引号一样),echo "$var"  ------>会输出 $var的值。

单引号中引的是变量,会将变量名输出:echo '$var'  ------>会输出 $var

特殊情况:

echo  "$VAL"   ,当VAL=     的形式是,即VAL的值为空, VAL的值用来比较时,不加双引号会出错,所以,加“”更安全一些。

小结:当变量取值的时候,建议要用双引号括起来。

9、条件测试

test  或 [   命令测试一个条件是否成立,成立返回0,不成立返回1

-gt

 

大于
-ge大于等于
-lt小于
-le小于等于
-eq等于
-ne不等于

形式如下例子:

var=100

test $var -gt 100

 以上的关系判断仅适用于整数或值为整数的变量

-d  DIR  

判断是否是目录
-f   FILE  判断是否是普通文件
-z   STRING判断字符串长度是否为0
-n   STRING判断字符串长度是否不为0

注意:

=判断字符串或数值是否相等
!=判断字符串或数值是否不相等

string1 = string2  ---->两个字符串相同为真,返回0----->等号两边必须要有空格

string1 != string2  ---->两个字符串不相同为真,返回0-----> !=两边必须要有空格

test命令可以替换为[命令

[ -f  file.c ]----------->[ 后边有空格   ]前边有空格

因为这是命令与 参数的关系。

示例:

var=hello ------------>字符串的长度不为空,变量不加双引号也没有关系。

[ -n $var ] 

var=          ------------->字符串的长度为空,变量必须加双引号,否则出错。

[ -n "$var" ] 

echo $?----------------->为假,返回1

 

[ -n $var ] 

echo $?----------------->返回0------------>与实际情况不符。

小结:取变量值的时候,尽量加“”,肯定不会出错。

10、逻辑表达式

[ ! EXPR ]  ------>EXPR可以是上述中的任意一种测试条件,!表示逻辑非

[  EXPR1 -a   EXPR2 ] ------>EXPR1\EXPR2为上述任意一种测试条件,-a表示逻辑与

[  EXPR1 -o   EXPR2 ] ------>EXPR1\EXPR2为上述任意一种测试条件,-o表示逻辑或

示例:

[ -d Desktop -a $VAR = "HELLO" ]             ------>注意:[]两边和=两边的空格

逻辑运算也可以使用 &&   和  || 

注意短路运算

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值