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" 的形式输出所有参数。

原文地址:https://www.cnblogs.com/runnyu/p/4675537.html