Shell programming 2


基础永远值得花费90%的精力去学习加强。认识实践的重要性。


SHELL=[ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ]

progress:[#### ] 20%


Ax Variables | 变量

Variable Types | 类型

变量有三种主要的类型

  • Local Variables − 局部变量,仅存在于当前实例中的变量。
  • Environment Variables − 环境变量,可用于shell的所有子进程中。
  • Shell Variables − shell变量,存在局部变量和环境变量,是shell正常运行所必须的特殊变量。

如果想让一个局部变量变为环境变量,需要使用export命令,子环境中无法生效。

Defining Variables | 定义

由于系统内置的变量是大写,自定义的可以使用小写,但推荐使用大写,这是UNIX的命名规范。
变量可以使用a-Z,0-9和下划线。数字不能在开头,不能使用除此之外的其它字符。

$ name="Enomothem"

注意,等号左右不能有空格。
scalar variables(标量变量)只能保存一个值,就如name保存了Enomothem。可以储存任何值。

Accessing Values | 访问

需要访问变量的值,需要在变量前加上美元符($)

$ echo $name

Read-only Variables | 只读

shell提供了一个只读命令readonly标记变量为只读,如果更改变量的值,将会报错。

$ name="Enomothem"
$ readonly name
$ name="who"
-bash: name: readonly variable

Unsetting Variables | 取消

使用unset命令来取消或删除变量的值

$ unset name

只读变量是无法使用unset删除的,一旦设置就无法更改,除非重启shell。

Special Variables | 特殊

一些特殊的变量。

$表示当前shell的进程号(PID)

$ echo $$

其它特殊变量。

Sr.No. character Variable & Description
1 $0 当前脚本的文件名。
2 $n 调用脚本的参数,n从1开始。
3 $# 提供脚本使用参数的数量。
4 $* 所有的参数被双引号引起来的集合
5 $@ 所有的参数被双引号单独引起来的集合
6 $? 前一个执行命令后退出的状态
7 $$ 当前shell的进程号
8 $! The process number of the last background command.

Command-Line Arguments

$0是执行的文件名,然后是参数$1,$2,$3,…

#!/bin/sh

echo "File Name: $0"
echo "First Parameter : $1"
echo "Second Parameter : $2"
echo "Quoted Values: $@"
echo "Quoted Values: $*"
echo "Total Number of Parameters : $#"

运行脚本

$ ./test.sh Zara Ali
File Name : ./test.sh
First Parameter : Zara
Second Parameter : Ali
Quoted Values: Zara Ali
Quoted Values: Zara Ali
Total Number of Parameters : 2

Special Parameters $* and $@

$*$@都是访问所有的参数,前者是将所有参数作为一个参数,之间有空格,后者是将所有参数作为一个参数,但参数之间单独分隔开来。

#!/bin/sh

for TOKEN in $*
do
   echo $TOKEN
done

用这个脚本来查看未知的参数。

Exit Status

$?记录前一个命令退出的状态,返回成功则是0,失败是1或其它数值表示各种异常。


文章作者: Enomothem
版权声明: 本博客所有文章除特别声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Enomothem !
  目录