!/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命令不能删除只读变量