加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

for循环是Linux shell 中最常用的结构

发布时间:2023-07-26 14:46:12 所属栏目:Linux 来源:
导读:for循环是Linux shell 中最常用的结构。for 循环有三种结构:一种结构是列表for循环;第二种结构是不带列表for循环;第三种结构是类C风格的for循环。

for var in list

do

commands

done

#!/bin/
for循环是Linux shell 中最常用的结构。for 循环有三种结构:一种结构是列表for循环;第二种结构是不带列表for循环;第三种结构是类C风格的for循环。
 
for var in list
 
do
 
commands
 
done
 
#!/bin/bash
 
for test in alabama alaska arizona arkansas california colorado
 
do
 
echo the next state is $test
 
done
 
>
 
the next state is alabama
 
the next state is alaska
 
the next state is arizona
 
the next state is arkansas
 
the next state is california
 
the next state is colorado
 
#!/bin/bash
 
for test in alabama alaska arizona arkansas california colorado
 
do
 
echo "the next state is $test"
 
done
 
echo "The las state we visited was $test"
 
test=connecticut
 
echo "wait, now we're visiting $test"
 
>
 
the next state is alabama
 
the next state is alaska
 
the next state is arizona
 
the next state is arkansas
 
the next state is california
 
the next state is colorado
 
The las state we visited was colorado
 
wait, now we're visiting connecticut
 
#!/bin/bash
 
for test in I don't know if this'll work
 
do
 
echo "word:$test"
 
done
 
>
 
word:I
 
word:dont know if thisll
 
word:work
 
#!/bin/bash
 
for test in nevada "New Hampshire" "New Mexico" "New York"
 
do
 
echo "Now going to $test"
 
done
 
>
 
Now going to nevada
 
Now going to New Hampshire
 
Now going to New Mexico
 
Now going to New York
 
#!/bin/bash
 
list="Alabama ALaska Arizona Arkansas Colorado"
 
list=$list" Connecticut"
 
for state in $list
 
do
 
echo "Have you ever visited $state?"
 
done
 
>
 
Have you ever visited Alabama?
 
Have you ever visited ALaska?
 
Have you ever visited Arizona?
 
Have you ever visited Arkansas?
 
Have you ever visited Colorado?
 
Have you ever visited Connecticut?
 
#!/bin/bash
 
file="states"
 
for state in `cat $file`
 
do
 
echo "Visit beautiful  $state"
 
done
 
#cat states
 
>
 
Alabama
 
Alaska
 
dddfac
 
dfsase
 
cvcvss
 
dfqzcvc
 
ddddwq
 
bnnn
 
qqojfaso
 
>
 
Visit beautiful  Alabama
 
Visit beautiful  Alaska
 
Visit beautiful  dddfac
 
Visit beautiful  dfsase
 
Visit beautiful  cvcvss
 
Visit beautiful  dfqzcvc
 
Visit beautiful  ddddwq
 
Visit beautiful  bnnn
 
Visit beautiful  qqojfaso
 
 
 
#!/bin/bash
 
IFS=$'\n'
 
file="states"
 
for state in `cat $file`
 
do
 
echo "visit beautiful $state"
 
done
 
>
 
#cat states
 
>
 
A           labama
 
Alaska
 
dddfac
 
dfsase
 
cvcvss
 
dfqzcvc
 
ddddwq
 
bnnn
 
qqojfaso
 
>
 
visit beautiful A           labama
 
visit beautiful Alaska
 
visit beautiful dddfac
 
visit beautiful dfsase
 
visit beautiful cvcvss
 
visit beautiful dfqzcvc
 
visit beautiful ddddwq
 
visit beautiful bnnn
 
visit beautiful qqojfaso
 
在处理长脚本时,可能在一个地方需要修改IFS的值,然后忘掉它并在脚本中其他地方以为还是默认的值。一个可参考的简单实践:
 
IFS.OLD=$IFS
 
IFS=$'\n'
 
IFS=$IFS.OLD
 
#!/bin/bash
 
for file in /root/*
 
do
 
if  [ -d "$file" ]then
 
echo " $file is a directory "
 
elif [ -f "$file" ]then
 
echo "$file is a file"
 
fi
 
done
 
#!/bin/bash
 
for file in /root/.b* /home/rich/badtest
 
do
 
if [ -d "$file" ]then
 
echo "$file is a directory"
 
elif [ -f "$file" ]then
 
echo "$file is a file"
 
else
 
echo "$file doesn't exist"
 
fi
 
done
 
类C语言风格
 
#!/bin/bash
 
for (( i=1; ido
 
echo "The next nuber is $i"
 
done
 
>
 
The next nuber is 1
 
The next nuber is 2
 
The next nuber is 3
 
The next nuber is 4
 
The next nuber is 5
 
The next nuber is 6
 
The next nuber is 7
 
The next nuber is 8
 
The next nuber is 9
 
The next nuber is 10
 
#!/bin/bash
 
for (( a=1, b=10; a do
 
echo "$a - $b"
 
done
 
>
 
1 - 10
 
2 - 9
 
3 - 8
 
4 - 7
 
5 - 6
 
6 - 5
 
7 - 4
 
8 - 3
 
9 - 2
 
10 - 1
 
11 - 0
 
12 - -1
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!