shell学习03:定义变量


1. 变量输出

  • 使用一个定义的变量,只要在变量名前面加美元符号$即可;
[kiosk@foundation60 定义变量]$ cat 01.sh 
#!/bin/bash
url=http://www.westos.org
echo $url
name='西部开源'
echo $name
author="westos-dd"
echo $author
[kiosk@foundation60 定义变量]$ sh 01.sh 
http://www.westos.org
西部开源
westos-dd
  • echo输出加{ }
[kiosk@foundation60 定义变量]$ cat 02.sh 
#!/bin/bash
author="westos-dd"
echo $author
echo ${author}
[kiosk@foundation60 定义变量]$ sh 02.sh 
westos-dd
westos-dd
[kiosk@foundation60 定义变量]$ cat 03.sh 
#!/bin/bash
skill="Java"
echo "I am a good ${skill}script"
[kiosk@foundation60 定义变量]$ sh 03.sh 
I am a good Javascript
[kiosk@foundation60 定义变量]$ cat 04.sh 
#!/bin/bash
url=http://www.baidu.com
echo ${url}
url="http://www.taobao.com"
echo $url
[kiosk@foundation60 定义变量]$ sh 04.sh 
http://www.baidu.com
http://www.taobao.com
  • " "和’ '的区别
       1)以单' '包围变量的值时,单引号里面是什么就输出什么,即使内容有变量和命令也会把他们原样输出。这种方式比较适合定义显示纯字符串的情况,即不希望解析变量、命令等的场景。
       2)以" "包围变量的值时,输出时会先解析里面的变量和命令,而不是把双引号中的变量名和命令原样输出。这种方式比较适合字符串中附带由变量和命令并且将其解析后再输出的变量定义。
[kiosk@foundation60 定义变量]$ cat 05.sh 
#!/bin/bash
url="http://www.westos.org"
website1='西部开源:${url}'
website2="西部开源:${url}"
echo $website1
echo $website2

[kiosk@foundation60 定义变量]$ sh 05.sh 
西部开源:${url}
西部开源:http://www.westos.org
  • 只读变量
[kiosk@foundation60 定义变量]$ sh test.sh 
test.sh: line 4: myname: readonly variable
[kiosk@foundation60 定义变量]$ cat test.sh 
#!/bin/bash
myname="zjy"
readonly myname
myname='ljl'

2. 将文件赋值给变量

[kiosk@foundation60 定义变量]$ cat log.txt 
clmclcmsa;cmascm
[kiosk@foundation60 定义变量]$ log=`cat log.txt`
[kiosk@foundation60 定义变量]$ echo $log
clmclcmsa;cmascm
  • unset可删除变量和函数
[kiosk@foundation60 定义变量]$ log=`cat /etc/group`
[kiosk@foundation60 定义变量]$ echo $log
root:x:0: bin:x:1: daemon:x:2: sys:x:3: adm:x:4: tty:x:5: disk:x:6: lp:x:7: mem:x:8: kmem:x:9: wheel:x:10: cdrom:x:11: mail:x:12:postfix man:x:15: dialout:x:18: floppy:x:19: games:x:20: tape:x:30: video:x:39: ftp:x:50: lock:x:54: audio:x:63: nobody:x:99: users:x:100: utmp:x:22: utempter:x:35: ssh_keys:x:999: input:x:998: systemd-journal:x:190: systemd-bus-proxy:x:997: systemd-network:x:192: dbus:x:81: polkitd:x:996: cgred:x:995: unbound:x:994: tss:x:59: libstoragemgmt:x:993: rpc:x:32: colord:x:992: usbmuxd:x:113: dip:x:40: saslauth:x:76: geoclue:x:991: libvirt:x:990: abrt:x:173: setroubleshoot:x:989: rtkit:x:172: radvd:x:75: rpcuser:x:29: nfsnobody:x:65534: kvm:x:36:qemu qemu:x:107: chrony:x:988: pulse-access:x:987: pulse-rt:x:986: pulse:x:171: gdm:x:42: gnome-initial-setup:x:985: avahi:x:70: slocate:x:21: postdrop:x:90: postfix:x:89: ntp:x:38: sshd:x:74: stapusr:x:156: stapsys:x:157: stapdev:x:158: tcpdump:x:72: kiosk:x:1000:kiosk apache:x:48: dhcpd:x:177: mysql:x:27:
[kiosk@foundation60 定义变量]$ unset log  # 删除log变量
[kiosk@foundation60 定义变量]$ echo $log

  • 变量被删除后不能再次使用,unset命令不能删除只读变量。
[kiosk@foundation60 定义变量]$ cat 06.sh 
#!/bin/bash
myurl="http://www.westos.org"
unset myurl
echo $myurl
[kiosk@foundation60 定义变量]$ sh 06.sh 

3. 定义变量类型

在Bash shell中,每一个变量的值都是字符串,无论你给变量赋值时有没有使用引号,值都会以字符串的形式存储。如果需要定义变量类型,使用declare关键字显示定义变量的类型。

[kiosk@foundation60 定义变量]$ cat 1.sh 
#!/bin/bash
declare -i m n ret  # -i:将变量设置为整形
m=10
n=30
ret=$m+$n
echo $ret
[kiosk@foundation60 定义变量]$ sh 1.sh 
40
# -r:只读模式
[kiosk@foundation60 定义变量]$ declare -r n=12
[kiosk@foundation60 定义变量]$ n=13
bash: n: readonly variable
[kiosk@foundation60 定义变量]$ echo $n
12
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值