shell-知识10 for 用于目录下文件的遍历;$[ ] 和 $(( ))数学运算; for传入变量用空格做分隔符 ; ls -d 的使用;

# 打印1到100
for i in `seq 1 100`
do
    echo $i
done

$[$sum+$i] 俩变量的加法运算 ( [ 不用像做判断时候左右加空格了 )

$[  ]  和  $((  ))    都是进行数学运算

它们是一样的。支持+ - * / %   “加、减、乘、除、取模”。

注意,bash只能作整数运算,对于浮点数是当作字符串处理的。

$((  )) 还可作不同进位制运算 (如二进制、八进位、十六进制),但是输出结果皆为十进制。
echo $((16#2a))   结果为 42 (16进位转十进制)

 [[   ]]  和  ((   ))

 [[   ]]是[ ]的针对  字符串表达式  的加强版。

((    ))是[ ]的针对  数学比较表达式  的加强版。

其中(( )),不需要再将表达式里面的大小于符号转义,除了可以使用标准的数学运算符外,还增加了以下符号:

seq  num1  num2  就是输出从num1到num2的数字

for常用方式 : 文件的遍历

【 -d 】判断是否为目录 

for  a  in  ` ls  /etc/  `    把 ls /etc/ 命令的结果,每个分别传入变量a中进行判断。

要先cd到目录下

原因是ls /etc/查询到的结果是只有 文件名或者目录名的,不包含绝对路径,传入$a ,  则在判断 【-d  $a】时候可能会因为当前所在目录下没有这个名字而发生错误。

for 可以把遍历的变量 空格隔开 直接写在条件中

注意:

for循环时候,默认以 空格 或者 回车 作为传入变量的分隔符

这就导致如果传入结果里,某个变量内如果是包含空格的,就会被默认拆分成2个变量来看待。

比如下面的例子    3 4.txt   是一个文件,但是被拆开成了 3 和4.txt

ls  -d   查看目录本身。 相当于  ls  目录名本身

当 ls -d 命令发起时就是在当前目录,则显示  .  代表就是当前目录

例子可见, 

/test/ 下是有文件和目录的

ls -d    :显示的 .  也就是当前目录test本身 

ls -ld   :显示的是当前目录test本身的属性

ls  当前目录名 :  相当于输出目录名,如果

因此前面  

  if  [ -d $a ]    当 a 为目录时候为真, ls  -d  $a  就会输出这个目录名字

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值