• shell 语法与C语言对比


    要实现的功能

    C语言编程

    Linux Shell脚本编程

    程序/脚本的参数传递

    int main(int argc, char** argv)

    {

    if (argv != 4) {

        printf( “Usage: %s arg1 arg2 arg3”, argv[0] );

        return 1;

    }

     

    printf(“arg1:%s/n”,argv[1]);

    printf(“arg2:%s/n”,argv[2]);

    printf(“arg3:%s/n”,argv[3]);

    return 0;

    }

    #!/bin/sh

     

    if [ $# -lt 3 ]; then

        echo "Usage: `basename $0` arg1 arg2 arg3" >&2

        exit 1

    fi

     

    echo "arg1: $1"

    echo "arg2: $2"

    echo "arg3: $3"

    exit 0

    int main(int argc, char** argv)

    {

        int i;

    for (i=1; i<=argc;i++) {

    printf(“arg:%s/n”,argv[i]);

    }

    return 0;

    }

    #!/bin/sh

     

    while [ $# -ne 0 ]

    do

        echo "arg: $1"

        shift

    done

    逻辑/数值运算

    if (d == 0)

    if [ "$D" -eq "0" ] ; then

    if (d != 0)

    if [ "$D" -ne "0" ] ; then

    if (d > 0)

    if [ "$D" -gt "0" ] ; then

    if (d < 0)

    if [ "$D" -lt "0" ] ; then

    if (d <= 0)

    if [ "$D" -le "0" ] ; then

    if (d >= 0)

    if [ "$D" -ge "0" ] ; then

    字符串比较

    if (strcmp(str,”abc”)==0) {

    }

    if [ "$STR" != "abc" ]; then

    fi

    输入和输出

    scanf(“%d”,&D);

    read D

    printf( “%d”, D);

    echo –n $D

    printf( “%d”,D);

    echo $D

    printf( “Press any to continue...”);

    char ch=getchar();

    printf( “/nyou pressed: %c/n”, ch );

    #!/bin/sh

     

    getchar()

    {

    SAVEDTTY=`stty -g`

    stty cbreak

    dd if=/dev/tty bs=1 count=1 2> /dev/null

    stty -cbreak

    stty $SAVEDTTY

    }

     

    echo -n "Press any key to continue..."

    CH=`getchar`

    echo ""

    echo "you pressed: $CH"

     

    read D <&3

    程序/脚本的控制流程

    if (isOK) {

        //1

    } else if (isOK2) {

        //2

    } else {

        //3

    }

    if [ isOK ]; then

        #1

    elif [ isOK2 ]; then

        #2

    else

        #3

    fi

    switch (d)

    {

    case 1:

    printf(“you select 1/n”);

    break;

    case 2:

    case 3:

    printf(“you select 2 or 3/n”);

    break;

    default:

    printf(“error/n”);

    break;

    };

    case $D in

    1) echo "you select 1"

        ;;

    2|3) echo "you select 2 or 3"

        ;;

    *) echo "error"

        ;;

    esac

    for (int loop=1; loop<=5;loop++) {

         printf( “%d”, loop);

    }

    for loop in 1 2 3 4 5

    do

        echo $loop

    done

    do {

        sleep(5);

    } while( !isRoot );

    IS_ROOT=`who | grep root`

    until [ "$IS_ROOT" ]

    do

        sleep 5

    done

    counter=0;

    while( counter < 5 ) {

    printf( “%d/n”, counter);

    counter++;

    }

    COUNTER=0

    while [ $COUNTER -lt 5 ]

    do

    echo $COUNTER

        COUNTER=`expr $COUNTER + 1`

    done

    while (1) {

    }

    while :

    do

    done

    break;

    breakbreak nn表示跳出n级循环

    continue;

    continue

    函数与过程的定义

    void hello()

    {

        printf( “hello/n” );

    }

    //函数调用

    hello();

    hello()

    {

        Echo “hello”

    } 或者

    function hello()

    {

        Echo “hello”

    }

    #函数调用

    hello

    函数的参数和返回值

    int ret = doIt();

    if (ret == 0) {

        printf( “OK/n” );

    }

    doIt

    if [ “$?” –eq 0 ] ; then

    echo “OK”

    fi

    或者

    RET = doIt

    if [ “$RET” –eq “0” ] ; then

    echo “OK”

    fi

    int sum(int a,int b)

    {

    return a+b;

    }

    int s = sum(1,2);

    printf(“the sum is: %d/n”, s);

    sum()

    {

        echo -n "`expr $1 + $2`"

    }

    S=`sum 1 2`

    echo "the sum is: $S"

    bool isOK() { return false; }

    if (isOK) {

        printf( “YES/n” );

    } else {

        printf( “NO/n” );

    }

    isOK()

    {

        return 1;

    }

    if isOK ; then

        echo "YES"

    else

        echo "NO"

    fi

  • 相关阅读:
    spring
    23种设计模式
    get getline
    ping
    Android四大组件
    C++数据结构
    玩转windows便签
    [JavaScript]再谈 this
    [JavaScript]面向对象编程浅析之XJB讲
    [JavaScript]MVC浅析
  • 原文地址:https://www.cnblogs.com/zhuyp1015/p/2578502.html
Copyright © 2020-2023  润新知