zoukankan      html  css  js  c++  java
  • Shell脚本之:变量

    与编译型语言不同,shell脚本是一种解释型语言。

    执行这类程序时,解释器(interpreter)需要读取我们编写的源代码(source code),并将其转换成目标代码(object code),再由计算机运行。

    Linux默认的脚本解析器是bash。

    参考资料 http://c.biancheng.net/cpp/view/6994.html

    第一个Shell脚本

    下面演示我们的第一个shell脚本,使用文本编辑器(如vi),键入如下代码并保存为hello.sh

    #!/bin/bash

    # 打印hello world echo
    "Hello World !"

    然后给该脚本赋予执行权限

    chmod +x ./hello.sh

    然后执行该脚本,终端就会显示Hello World!

    其中脚本第一行#!/bin/bash 指明了该脚本的解释器

    sh里没有多行注释,只能每一行加一个#号

    read命令

    下面的脚本使用read命令从 stdin 获取输入并赋值给 PERSON 变量,最后在 stdout 上输出

    #!/bin/bash
    echo "What is your name?"
    read PERSON
    echo "Hello, $PERSON"

    下面是运行情况

    Shell变量

    定义变量

    variableName="value"

    使用一个定义过的变量,只要在变量名前面加美元符号($)即可,如:

    name="runnyu"
    echo ${name}

    花括号可加可不加,加花括号是为了帮助解释器识别变量的边界。使用readonly+变量名可以将变量定义为只读变量,unset+变量名可以删除变量

    readonly name
    unset name

    特殊变量

    编写special.sh测试

    #!/bin/sh
    echo "pid=$$"
    echo "$0"
    echo "$1"
    echo "$2"
    echo "$#"
    echo "$*"

    运行结果

    $* 和 $@ 都表示传递给函数或脚本的所有参数,不被双引号(" ")包含时,都以"$1" "$2" … "$n" 的形式输出所有参数。

    但是当它们被双引号(" ")包含时,"$*" 会将所有的参数作为一个整体,以"$1 $2 … $n"的形式输出所有参数;"$@" 会将各个参数分开,以"$1" "$2" … "$n" 的形式输出所有参数。

  • 相关阅读:
    标准I/O的缓冲
    Linux 的文件类型
    引用和指针
    信号-总结
    实时信号
    信号的其它特性
    信号处理器函数
    信号集 / 信号掩码(阻塞信号传递)
    显示信号描述
    发送信号
  • 原文地址:https://www.cnblogs.com/runnyu/p/4675537.html
Copyright © 2011-2022 走看看