shell变量

!/bin/bash\
echo "Helllo World !"
echo "what is your name?"
read PERSON
echo "hello,$PERSON"

使用 read 命令从 stdin 获取输入并赋值给 PERSON 变量,最后在 stdout 上输出

url=http://www.baidu.com
echo $url
name='C语言智能'
echo $name 

使用一个定义过的变量,只要在变量名前面加美元符号$即可

echo "I am good at ${name}skill" 

变量名外面的花括号{ }是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界,推荐给所有变量加上花括号{ },这是个良好的编程习惯。

name="C语言智能model"
echo ${name}
website1='百度:${url}'  

以单引号' '包围变量的值时,单引号里面是什么就输出什么,即使内容中有变量和命令(命令需要反引起来)也会把它们原样输出。这种方式比较适合定义显示纯字符串的情况,即不希望解析变量、命令等的场景

website2="百度:${url}"  
以双引号" "包围变量的值时,输出时会先解析里面的变量和命令,而不是把双引号中的变量名和命令原样输出。这种方式比较适合字符串中附带有变量和命令并且想将其解析后再输出的变量定义。
echo $website1
echo $website2

Shell 也支持将命令的执行结果赋值给变量,常见的有以下两种方式:第一种方式把命令用反引号包围起来,反引号和单引号非常相似,容易产生混淆,所以不推荐使用这种方式;第二种方式把命令用$()包围起来,区分更加明显,所以推荐使用这种方式。

log=$(cat log.txt)
echo $log

log=`cat log.txt`
echo $log

myUrl="www.qq.com"
readonly myUrl      #使用readonly命令可以将变量定义为制度变量,制度变量的值不能被改变
myUrl="www.alibaba.com"


myUrl2="www.163.com"
unset myUrl2
echo $myUrl2    #使用unset命令可以删除变量,变量被删除后不能再次使用;unset命令不能删除只读变量

变量类型

运行shell时,会同事存在三种变量:

1、局部变量---局部变量在脚本或命令中定义,仅在当前shell实力中有效,其他shell启动的程序不能访问局部变量

2、环境变量---所有程序,包括shell启动的程序,都能访问环境变量。有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。

3、shell变量---shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行。

你可能感兴趣的:(shell变量)