shell中for循环的对象如何写

本文详细介绍了Shell脚本中数字循环和字符串循环的各种实现方式,包括使用双括号、大括号、seq命令等,并通过实例展示了如何在循环中处理变量和字符串。同时,文章还探讨了$*和$@的区别以及在路径循环中的应用。
摘要由CSDN通过智能技术生成

目录

1、数字循环对象

(1)常量范围

(2)含有变量的范围

2、字符串循环对象

(1)常量字符串

 (2)多个字符串

(3)$*和$@区别

(4)路径循环


1、数字循环对象

(1)常量范围

总结4种方式:表达循环1到10

双括号: ((a=1;a<=10;a++))    遇到了awk嵌套的时候就是单括号 awk 'BEGIN{for(i=1; i<=10; i++) print i}'

大括号:{1..10}

seq反引号: `seq 1 10`

seq变量号: $(seq 1 10)

#!/bin/bash

for i in {1..10}
do
    echo -n $i
done
echo -e

for ((i=1;i<11;i++))
do
    echo -n $i
done
echo -e

for i in `seq 1 10`
do
    echo -n $i
done
echo -e

for i in $(seq 1 10)
do
    echo -n $i
done
echo -e

(2)含有变量的范围

总结3种方式:表达循环1到10

双括号:((a=1;a<=$w;a++))

seq反引号:`seq 1 $w`

seq变量号:$(seq 1 $w)

#!/bin/bash

w=10

for ((a=1;a<=$w;a++))
do
    echo -n $a
done
echo -e

for c in `seq 1 $w`
do
    echo -n $c
done
echo -e

for c in $(seq 1 $w)
do
    echo -n $c
done
echo -e

#错误的使用{}大括号目前不知道杂用,一下是错误的使用
for b in {1..$w}
do
    echo -n $b
done
echo -e

for d in {1..w}
do
    echo -n $d
done
echo -e

for b1 in `{1..$w}`
do
    echo -n $b1
done
echo -e

for b2 in $({1..$w})
do
    echo -n $b2
done

2、字符串循环对象

(1)常量字符串

总结:引号+空格切割的,引号大于空格

#!/bin/bash

for i in "data0 data1 data data2";
do
echo $i is get
done

for y in f1 f2 f3
do
echo $y is get
done

for z in "f1" "f2" "f3"
do
echo $z is get
done

  (2)字符串变量

总结:双引号加算整体,不加空格分隔

#!/bin/bash
#不加双引号怎么都是用空格分隔
list="data0 data data2"
for y in $list
do
    echo $y is get
done
echo "******************************************"

for x in ${list[*]}
do
    echo $x is get
done
echo "******************************************"

for a in ${list[@]}
do
    echo $a is get
done
echo "******************************************"

#加了双引号怎么都算整体
for y in "$list"
do
    echo $y is get
done
echo "******************************************"


for b in "${list[*]}"
do
    echo $b is get
done
echo "******************************************"

for i in "${list[@]}"
do
                              
var1="hello"
var2="world"
var3="jintian"
for z in $var1 $var2 $var3
do
echo $z is get
done

(3)$*和$@区别

区别:双引号加不加 

               $@加不加双引号没区别

               $*加双引号就是把所有入参当做整体

范围:脚本以外获取的变量

#!/bin/bash
echo "------------------不穿衣服一样------------------------"
echo $*
echo $@
for i in $*
do 
    echo $i
done

for y in $@
do 
    echo $y
done

echo "------------------穿衣服不一样------------------------"
echo $*
echo $@
for i in "$*"
do 
    echo $i
done

for y in "$@"
do 
    echo $y
done

(4)路径循环

            如何获取路径如下内容

#!/bin/bash
for file in /home/hanfang1/*;
do
echo $file is file path \! ;
done


for file in $(ls *.sh)
do
    echo $file
done

for file in `ls *.sh`
do
    echo $file
done

 

 

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值