Linux Shell 编程基础详解——吐血整理,墙裂推荐! (3)

单引号和双引号的用法基本类似,不同的是单引号对特殊字符不敏感,可以将其做为普通字符输出出来
例:

$ echo '$$' //结果 $$ 不用借助\进行屏蔽 $ echo '`V_V`' //结果`V_V`,和前页双引号比较 2.33 反引号

该命令用于设置系统命令的输出到变量,shell将反引号中的内容做为命令执行。
例1:

$ echo `hello` -bash: hello: command not found

例2:

$ echo `date` 2021年 1月17日 星期日 23时40分18秒 CST

反引号可以和双引号结合起来使用:
例3:

$ echo "The date today is `date`" The date today is 2021年 1月17日 星期日 23时41分15秒 CST 2.34 反斜线

如果一个字符有特殊含义,为防止shell误解其含义,可用\屏蔽该字符
具有特殊含义的字符
------------------------------------------------------------------------------------
& * ^ $ ` “ |
------------------------------------------------------------------------------------
例1 :

$ echo "$$" //在屏幕上输出$$字符,结果显示3853 $ echo "\$$" //用反斜线屏蔽,防止shell误解,结果显示$$

例2:

$ echo * //在屏幕上输出*字符,结果输出当前目录下内容 $ echo \* //用反斜线屏蔽,防止shell误解,输出*字符 2.4 Shell变量,参数 2.4.1 系统变量

系统变量适用于所有用户进程,可以在命令行中设置,但用户注销时这些值将丢失,最好在.profile中进行定义,或者/etc/profile
传统上,所有环境变量都大写,且必须用export命令导出
设置环境变量:

var_name=value; export var_name

或者:

var_name=value export var_name

又或者

export var_name=value

查看环境变量:

echo $var_name

env 该命令可查看所有系统环境变量

unset var_name 清除系统环境变量

嵌入shell变量
一般来讲,bourne shell有一些预留的环境变量名,这些变量名不能做其他用途,通常在/etc/profile中建立这些嵌入的环境变量,但这不绝对,取决于用户
shell的变量列表:
CDPATH; EXINIT; HOME; IFS; LOGNAME; MAIL;MAILCHECK; PATH; PS1; PS2; SHELL; TERMINFO;TERM; TZ

2.4.2 用户变量

在用户shell生命周期的脚本中使用,不同的用户可以定义各自的用户变量 ~/.bashrc
用法:

var_name=value

显示变量:

echo $var_name or echo ${var_name} //建议使用

清除变量:

unset var_name

显示用户所有变量:set
测试变量是否设置:echo ${var:=value} 若未设置或未初始化,可用新值

使用变量保存系统命令参数
例:

$ SOURCE="/etc/passwd" $ DEST="/home/chenshifeng/ $ cp $SOURCE $DEST

设置只读变量
可设置某个变量为只读方式,只读变量不可更改,否则系统返回错误
用法:

var_name=value readonly var_name

例:

$ myvar="100" $ readonly myvar $ myvar="200" $ -bash: myvar: readonly variable 2.4.3 位置变量

位置变量属于只读变量
作用:向shell脚本传递参数,参数个数可以任意多,但只有前9个被访问到,shift命令可以更改这个限制。
每个访问参数前加$,
第一个参数为0,表示预留保存实际脚本名字,无论脚本是否有参数,此值均可用,如:给脚本test传递信息:
Would you like to do it

$0 $1 $2 $3 $4 $5 $6 $7 $8 $9
脚本名字   would   you   like   to   do   it        

例:$ vi test

#!/bin/sh echo "The full name is : $0 " echo "The script name is : `basename $0`" echo "The first parameter is :$1" echo "The second parameter is :$2" echo "The third parameter is :$3" echo "The fourth parameter is :$4" echo "The fifth parameter is :$5" echo "The sixth parameter is :$6" echo "The seventh parameter is :$7" echo "The eighth parameter is :$8" echo "The ninth parameter is :$9"

保存文件,执行 $ ./test would you like to do it

The full name is : ./test The script name is : test The first parameter is :would The second parameter is :you The third parameter is :like The fourth parameter is :to The fifth parameter is :do The sixth parameter is :it The seventh parameter is : The eighth parameter is : The ninth parameter is :

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zydzpj.html