【unix学习】shell编程—参数、流程控制、算数运算、函数

来源:互联网 发布:一淘和淘宝联盟 两个号 编辑:程序博客网 时间:2024/06/05 16:15

  • shell参数
    • 符号说明
    • 与 区别
    • 变量赋值
  • shell脚本
    • if语句
    • case语句
    • 循环
    • expr 算数表达
    • shell函数

shell参数

符号说明

echo $0$1-$9 代表参数的位置,1代表第一个参数,,,,$* 把全部参数当作一个字符串形式的参数,"$1 $2 … $n"的形式$@ 把参数当作列表形式,与$*相同,"$1" "$2""$n" 的形式,注意引号的差别。$# 参数的个数$$ 运行的当前进程ID号$? 显示上一个进程是否执行成功,成功执行返回0,执行不成功返回1$! 后台运行的最后一个进程的ID号$* 与 $@ 区别:相同点:都是引用所有参数。不同点:只有在双引号中体现出来。假设在脚本运行时写了三个参数 123,,则 " * " 等价于 "1 2 3"(传递了一个参数),而 "@" 等价于 "1" "2" "3"(传递了三个参数)。

$* 与$@ 区别

for i in "$*"do    echo $idone#结果#1 2 3for i in "$@"do    echo $idone#结果#123

变量赋值

[s14516@gdufs]$name="koo" #赋值之间别有空格[s14516@gdufs]$echo namename[s14516@gdufs]$echo $namekoo

shell脚本

#! 告诉系统其后路径所指定的程序即是解释此脚本文件的 Shell 程序。

if语句

#!/bin/bashread inputif [ $input = "gdufs" ]then    echo "right"else    echo "wrong"fi

case语句

#!/bin/bashhour=`date "+%H"`case $hour in[0-8]|19|2[0-3])        echo "good night"        ;;9|1[0-2])        echo "good morning"        ;;1[3-8])        echo "good afternoon"        ;;    *) #表示其他情况esac

循环

for name in zhangsan lisi wangwudo    echo $namedone

expr 算数表达

1.四则运算

+ - \* / %这小表达式两边需要有空格[s14516@gdufs]$expr 4 \* 3

2.赋值表达式

[s14516@gdufs]$a=`expr 4 \* 3`[s14516@gdufs]$echo $a12

expr只支持整型运算
3.浮点型运算

[s14516@gdufs]$echo  4 \* 3.2 | bc

4.while循环

#!/bin/bashread -p 'please input' ni=1while [ $i -le $n ]do        echo $i        i=`expr $i + 1`done

5.求和

#!/bin/bashread -p 'please input: ' ni=1sum=0while [ $i -le $n ]do        sum=`expr $sum + $i`        i=`expr $i + 1`doneecho $sum

shell函数

1.无参数函数

#!bin/bashgreet(){    echo 'hello'}greet

2.有参数函数

#!/bin/bashgreet(){    echo "hello, $1"      ## $1 表示第一个参数,不需要在方法上写参数}read -p 'please input: ' name1 name2greet $name1greet $name2   
原创粉丝点击