shell高级知识(2)---特殊字符

不积跬步,无以至千里

每天进步一点点

# 注释

1.表示注释

2.参数替换 echo ${PATH#*:}

3.数制转换 echo $((2#101011)) 将二进制101011转换成10进制

;分隔

1.命令分隔,在一行中写多个命令,echo "aa";echo "cc"

2.在条件中的if和then如果放在同一行,也用;分隔

;;case 条件的结束

. 命令相录于 source

#!/bin/bash
. data-file #加载当前目录下的data-file文件
#相当于"source data-file“ ,但是.的可移植性更强 相当于 include data-file的作用

,多个命令都被执行,但返回最后一个

let="t2=((a=9,15/3))" #set "a=9" and "t2=15/3",最后输出t2=5,a=9

"",''  双引号和单引号,双引号可以解析变量,单引号则不行

: 操作符

空操作,什么都不做

死循环 while :

while : 
do
....
done
#等价于
while true
do
.....
done

在if/then中表示什么都不做,引出分支

if condition
then : #什么都不做 
else
....
fi

设置默认参数 :${username=`whoami`}

: ${username=`whoami`}
# ${username=`whoami`} 如果没有开头的:的话,将会给出一个错误,除非username是一个内部命令或内建命令 
:> data.xxx #文件“data.xxx"现在被清空了,与cat /dev/null > data.xxx 相同,但是 :>不会产生一个新换进程


$* 所有参数

$#参数个数

$$ 进程的ID

$?进程的返回状态

()字符:命令组,在一个子shell中运行(a=3;echo $a)其中定义的变量在后面不可用

eg:

a=123
( a=123; )
echo "a= $a" #a=123 在圆括号中a变量,更像是一个局部变量
在括号中的变量,由于是在子 shell中,所以对于脚本剩下的部分是不可用的,父进程也就是脚本本身,将不能读取在子进程中创建的变量,也就是在子shell中创建的变量

()还有一个作用,数组的初始化

array=(a,b,c)




 



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值