Shell脚本的计算逻辑知识点

一个程序的基本结构图:

        如果我们要把标准输出和错误输出都写入到一个文件里,例如:ls /abc / 1>file.txt 2>1,abc这个路径是不存在的,代表错误输出,结果file.txt文件里只有标准输出,因为标准输出把错误输出给覆盖了。

         所以,就要用到&把他们连接起来,ls /abc / 1>file.txt 2>&1,这样,标准输出和错误输出都在file.txt文件里了

输入的标志:<          输出的标志:>

输出重定向:>:ls /tmp 1>aaa   把标准输出覆盖aaa文件中的内容

                      >>:ls /tmp  1>>aaa   把标准输出追加到aaa文件中

输入重定向:<:

                      <<:read aaa<<AABB,执行该命令后,就会进入编辑模式,用来给变量aaa赋值,当写入AABB时停止赋值;

                      <<<:read aa<<<"xxxx"---------->这个命令代表把"xxx"赋值给本地变量aa

变量:本地:name=god
           局部:local---只能用于函数
           环境:export
           特殊:$#:位置参数个数
                      $*:参数列表,双引号引用为一个字符串
                      $@:参数列表,双引号引用为单独的字符串
                      $$:当前shell的PID:接收者
                      $BASHPID:真实
                      $?:上一个命令退出状态    0:成功      other:失败
            位置:$n 向脚本中传递参数,$1代表第一个参数

       当我们编写一个输出功能的脚本时,我们可以选择参数的输出位置,例如:echo $2    echo $12...,但是$12只能显示第1个参数加2,所以,我们就需要通过{}来限制命令的界限:echo ${12}

算术表达式:

let  算术运算表达式

let  C=$A+$B

$[算术表达式]

C =$[$A+$B]

$((算术表达式))

C=$(($A+$B))

条件表达式:

[  expression  ]

test expression

[[ expression ]]

流程控制:if、for、while、case

for:①for i in 1 2 3 4 5 
            do

                 echo $i

            done

        ②for i in  `seq 100`----->相当于1~100的队列

            do

                 echo $i

            done

         ③for((i=1;i<=9;i++))
             do

                 echo $i

              done

         ④for((i=1;i<=9;i++))---->用for的嵌套循环实现99乘法表
            do
                 for((j=1;j<=i;j++))
            do
                 echo -n "$i*$j=$[i*j]   "
            done
                 echo "  "
            done

 if:if [ 2 -gt 2 ]
       then
              echo "ok"
       elif [ 3 -lt 2 ]
       then
               echo "error"
        else
               echo "hello world"
        fi

case:  case $num in 
                  1) echo '你选择了1' ;;
                  2) echo '你选择了2' ;;
                  3) echo '你选择了3' ;;
                  4) echo '你选择了4' ;;
                  *)  echo "输入有误" ;;

              esac

while:①while   :---->死循环

               do

                     echo  " "

               done

            ②while  [ $flag -gt 0 ]

               do

                     echo  " "

               done

运行shell脚本的三种方式:

       source    脚本名

       bash    脚本名

       ./脚本名

生成start,end范围内的随机数:
     echo $((RANDOM % ($end - $start) + $start))

用hello Linux 覆盖file.txt文件中的内容-----》echo "hello Linux">file.txt

进程树--->pstree          目录树--->tree

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值