shell学习笔记之变量(一)

一、普通变量

1.使用变量之前通常并不需要事先声明,通常赋值的时候创建他们
2.默认所有的变量都被看做字符串,并且以字符串存储
3.变量区分大小写
4.变量名前面添加$符号来访问变量,赋值的时候只需要使用变量名
5.如果字符串中包含空格,就必须用引号括起来
6.等号两边不能有空格

#!/bin/sh



myvar="Hi there"



echo $myvar

echo "$myvar"

echo '$myvar'    #不会发生替换

echo \$myvar    #不会发生替换



echo Enter some text

read myvar

echo '$myvar' now equals $myvar



salutation=7+5



exit 0



$./variable

Hi there

Hi there

$myvar

$myvar

Enter some text



输入:Hello World

$myvar now equals Hello World



7+5

二、环境变量和参数变量

$0                shell脚本的名称
$1, $2,...        脚本程序的参数
$#                传递给脚本的参数的个数
$*                在一个变量中列出所有的参数,各个参数之间用环境变量IFS中的第一个字符分割开。
                如果IFS被修改了,那么$*将命令行分割为参数的方式也会改变。
$@                $*的一个变体,不适用IFS变量,即使IFS为空,参数也不会挤在一起。        
$$                脚本的进程号,脚本程序通常会用它来生成一个唯一的临时文件,如/temp/tempfile_$$

$HOME            用户的家目录
$PATH            冒号分割的用来搜索命令的目录列表
$PS1            命令提示符,通常是$字符,在bash中可以设置更复杂的值,比如:[\u@\h \W]$就是一个流行的默认值,
                给出用户名、机器名、当前目录名、提示符$
$PS2            二级提示符,用来提示后续的输入,通常是>字符
$IFS            输入域分隔符,读取输入时,它给出用来分割单次的一组字符,通常时候空格,换行符,制表符


$@和$*的区别

$ IFS=''

$ set foo bar bam



$ echo "$@"

foo bar bam



$ echo "$*"

foobarbam



$ unset IFS 



$ echo "$*"

foo bar bam

 

 

 

 

你可能感兴趣的:(shell)