zoukankan      html  css  js  c++  java
  • 学习shell(二)

    1. 条件分支:  (条件表达式的中括号里面 空格不可以省略)
      if [ 2 = 2 ]
      then 
      echo '2 = 2';
      else
      echo '2 != 2';
      fi
      # 上面的代码不使用缩进, 并不会出错, 但不应该这样使用
      # 上面的显然使用的是回车作为命令结束符, 那么如果把上面的几行代码放在一行, if 条件表达式后面必须加上分号, 否则会报错 例如:
      if [ 2 = 2 ]; then echo '2 equal 2'; else echo '2 != 2'; fi
      # 如果非要 写在一行, 标红的分号 必须要写 ,  其实只要保持良好的编码习惯, 该缩进就缩进, 换行的换行, 根本不需要考虑上面的问题
    2. read 命令从标准输入中读取一行,并把输入行的每个字段的值指定给 shell 变量. 他和$0  $1 这种的区别是, $0 是在执行文件的时候, 一起传入参数, 如果没传入参数, 那就没有参数了, 而 read 是运行脚本文件后会提示用户输入内容, 获取的是用户输入的内容
    3. ./test.sh 和 bash test.sh 功能相同. 当文件中使用read读取用户输入时, 使用 sh test.sh执行文件会报错, 而使用bash 则不会报错. 有待解决.
      ./test.sh  和 bash test.sh 在子进程中执行,  . ./test.sh  和 source ./test.sh 在当前进程中执行.   使用./test.sh 执行shell脚本文件, 文件必须有执行权限, 但是使用 bash 或者 sh 或者source 或者 . ./test.sh 的时候, 文件可以没有执行权限, 只需要有可读权限即可运行
    4. 开启转义:
      # 使用 -e 开启转义
      echo -e "this is 
       is"; #会换行
      echo -e 'that is 
       is'; #会换行
      echo "these are 
       is";  #不会换行
      echo  here 
       is;        #不会换行
      echo  -e `here 
       is`;   #会报错,  here command not  found  ,反引号是配合命令使用的
      # 结论是: 使用 -e 开启转义, 并且转义字符在引号中,无论单引号还是双引号都可以转义, 不使用 -e  或者转义不在引号中, 都不可以转义, 比如:
      echo  ttt '
      '  ttt  # 这样也是可以换行的
    5. 把显示的结果导入到文件中(不能够追加的)
      #!/bin/sh
      echo "It is a test" > myfile   #这个文件无论执行多少次, myfile文件中都只有一行内容
  • 相关阅读:
    phpcms后台进入地址(包含No permission resources错误)
    phpmyadmin上传大sql文件办法
    ubuntu彻底卸载mysql
    Hdoj 2602.Bone Collector 题解
    一篇看懂词向量
    Hdoj 1905.Pseudoprime numbers 题解
    The Python Challenge 谜题全解(持续更新)
    Hdoj 2289.Cup 题解
    Hdoj 2899.Strange fuction 题解
    Hdoj 2199.Can you solve this equation? 题解
  • 原文地址:https://www.cnblogs.com/bneglect/p/11363098.html
Copyright © 2011-2022 走看看