加入收藏 | 设为首页 | 会员中心 | 我要投稿 常州站长网 (https://www.0519zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

for循环是Linuxshell中最常用的结构

发布时间:2023-10-27 11:06:15 所属栏目:Linux 来源:转载
导读:   for循环是Linux shell 中最常用的结构。for 循环有三种结构:一种结构是列表for循环;第二种结构是不带列表for循环;第三种结构是类C风格的for循环。



  for var in list

  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
 

(编辑:常州站长网)

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

    推荐文章