首页 >运维 >linux运维 >你应该知道的Shell 脚本的经典十三问

你应该知道的Shell 脚本的经典十三问

Linux中文社区
Linux中文社区转载
2023-08-03 14:50:011322浏览

你应该知道的Shell 脚本的经典十三问

  • 经典的Shell十三问

    • 1. 为何叫做shell?

    • 2. Shell prompt(PS1)与Carriage Return(CR)的关系?

    • 3. 别人echo, 你也echo, 是问echo知多少?

    • 4. ""(双引号)与(单引号)有什么区别?

    • 5. var=value? export前后差在哪?

    • 6. exec跟source差在哪?

    • 7. ( ) 与 { } 差在哪?

    • 8. () 还有 ${} 差在哪?

    • 9. * 区别在哪?

    • 10. && 与 || 差在哪?

    • 11. > 与 631e9a1cb48cf2ee754143ba1df1e9dd 与 c01b8772d0f6397290d6d9199e3ce834 来改变送出的数据信道(stdout, stderr),使之输出到指定的档案。

      ls my.file no.such.file 1> file.out 2>file.err
      # 2>&1 就是将stderr并进stdout做输出
      ls my.file no.such.file 1> file.out 2>&1
      # /dev/null 空
      ls my.file no.such.file >/dev/null 2>&1
      
      cat < file > file
      # 在 IO Redirection 中,stdout 与 stderr 的管道会先准备好,才会从 stdin 读进资料。 
      # 也就是说,在上例中,> file 会先将 file 清空,然后才读进 < file , 
      # 但这时候档案已经被清空了,因此就变成读不进任何数据了

      12. 你要if还是case呢?

      # if
      echo -n "Do you want to continue?(Yes/No):"
      read YN
      if [ "$YN"=Y -o "$YN"=y -o "$YN"="Yes" -o "$YN"="yes" -o "$YN"="YES"];then
      echo "continue"
      else
      exit 0
      fi
      
      # case
      echo -n "Do you want to continue?(Yes/No):"
      read YN
      case "$YN" in
      [Yy]|[Yy][Ee][Ss])
      echo "continue"
      ;;
      *)
      exit 0
      esac

      13. for what? while与until差在哪?

      # for
      for ((i=1;i<=10;i++))
      do
       echo "num is $i"
      done
      
      # while
      num=1
      while [ "$num" -le 10 ]; do
       echo "num is $num"
       num=$(($num + 1))
      done
      
      # until
      num=1
      until [ "$num" -gt 10 ]; do
       echo "num is $num"
       num=$(($nu + 1))
      done
      • break 是结束 loop
      • return 是结束 function
      • exit 是结束 script/shell

以上是你应该知道的Shell 脚本的经典十三问的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文转载于:Linux中文社区。如有侵权,请联系admin@php.cn删除