Shell编程(02)-变量详解

2023-07-09 16:10:57 浏览数 (1)

Shell 编程语言是一种非类型的解释型语言,不像 C /Java 需要事先声明变量。在 Shell 中,可以使用赋值符号(=)为变量赋值。Shell 变量可以分为两类:局部变量和环境变量。局部变量只在创建它们的 Shell 脚本中使用,而环境变量可以在创建它们的 Shell 及其派生出来的任意子进程中使用。有些变量是用户创建的,其他的则是专用 Shell 变量。

例如,在脚本中定义 A=123,表示定义了一个名为 A 的变量,它的值为 123。在脚本中引用变量时,可以使用 $A。将变量放在字符串中会产生相应的效果,例如:

代码语言:javascript复制
#!/bin/bash

# Author wugk 2014-06-10

A=123

echo "Printf variables equal is $A"

执行脚本 sh test.sh,结果将会显示:Printf variables equal is 123。这里简单地理解变量,相当于定义了一个别名-名称,引用时加上 $ 符号即可。

例如,定义变量 name=wuguangke,执行 echo $name 将会显示 wuguangke

Shell 常见的系统变量解析如下:

  • $0:当前程序的名称。
  • $n:当前程序的第 n 个参数,n=1,2,…9。
  • $*:当前程序的所有参数(不包括程序本身)。
  • $#:当前程序的参数个数(不包括程序本身)。
  • $?:命令或程序执行完后的状态,一般返回 0 表示执行成功。
  • $UID:当前用户的 ID。
  • $PWD:当前所在的目录。

以下是一个测试常用变量的脚本示例 auto_var.sh

代码语言:javascript复制
#!/bin/bash
#auto print variables
#by wugk 2014-09

echo -e '33[32m-----------------------------33[0m'
echo "This is $0 param !"
echo "This $1 is $1 param !"
echo "This $2 is $2 param !"
echo -e '33[32m-----------------------------33[0m'
echo "This $* is $* param !"
echo "This $# is $# param !"
echo "This $? is $? param !"
echo

接下来,让我们编写一个简单的打印菜单的脚本示例:

代码语言:javascript复制
#!/bin/bash
#auto install httpd
#by wugk 2014-09

echo
代码语言:javascript复制
#!/bin/bash
#auto install httpd
#by wugk 2014-09

echo -e '33[32m-----------------------------33[0m'

FILES=httpd-2.2.17.tar.bz2
URL=http://mirrors.cnnic.cn/apache/httpd/
PREFIX=/usr/local/apache2/

echo -e "33[36mPlease Select Install Menu:33[0m"

echo

echo "1) Download official Httpd package."
echo "2) Extract Apache source code."
echo "3) Compile and install Httpd server."
echo "4) Start HTTPD server."

echo -e '33[32m-----------------------------33[0m'

sleep 20

以上是一个简单的打印菜单的脚本示例。在脚本中,使用 echo 命令打印菜单选项,使用 33[32m33[36m 控制输出颜色,使用 sleep 命令暂停脚本执行一段时间。

在脚本中,可以根据实际需要修改变量的值和菜单选项。执行该脚本 sh menu.sh,将会显示一个带有菜单选项的界面。

0 人点赞