Linux Shell 认识与学习(2)

read读取来自键盘输入的变量
[linuxidc@ubuntu /home 09:12 #54]$read atest
This is a test
[linuxidc@ubuntu /home 09:12 #55]$read -p "Please keyin your name: " -t 30 named
Please keyin your name: linuxidc
[linuxidc@ubuntu /home 09:13 #56]$echo $named
linuxidc

30秒没有任何操作时,该命令会自动略过。

declare或typeset,声明变量的类型

如果使用declare后面没有接任何参数,bash就会主动将变量名称数出来。
[linuxidc@ubuntu /home 09:21 #59]$sum=100+300+50
[linuxidc@ubuntu /home 09:22 #60]$declare -i sum=100+300+50
[linuxidc@ubuntu /home 09:22 #61]$echo $sum
450

变量类型默认为字符串,所以不能制定变量类型,则1+2为一个字符串而不是计算式,因此执行第一条命令会直接输出100+300+50.。

将sum变成环境变量:
[linuxidc@ubuntu /home 09:13 #57]$declare -x sum
[linuxidc@ubuntu /home 09:21 #58]$export | grep sum
declare -x sum

将sum变成只读属性,不可修改:
[linuxidc@ubuntu /home 09:25 #62]$declare -r sum
[linuxidc@ubuntu /home 09:29 #63]$sum=testgting
bash: sum: readonly variable

让sum变成非环境变量的自定义变量:
[linuxidc@ubuntu /home 09:29 #64]$declare +x sum
[linuxidc@ubuntu /home 09:30 #65]$declare -p sum
declare -ir sum="450"

数组变量类型
[linuxidc@ubuntu /home 09:30 #66]$var[1]="small min"
[linuxidc@ubuntu /home 09:32 #67]$var[2]="big min"
[linuxidc@ubuntu /home 09:32 #68]$var[3]="nice min"
[linuxidc@ubuntu /home 09:32 #69]$echo "${var[1]},${var[2]},${var[3]}"
small min,big min,nice min

与文件系统及程序的限制关系ulimit

列出你目前身份的所有限制数据数值:
[linuxidc@ubuntu /home 09:33 #70]$ulimit -a

限制用户仅能建立10MB一下的容量文件:
[linuxidc@ubuntu /home 09:38 #74]$ulimit -f 10240
[linuxidc@ubuntu /home 09:38 #75]$ulimit -a

尝试创建20M的文件:
[linuxidc@ubuntu ~/Desktop/linux_study 09:41 #81]$sudo dd if=~/Desktop/linux_study/ of=123 bs=1M count=20

[linuxidc@ubuntu ~/Desktop/linux_study 09:41 #82]$ll
 total 8
 drwxrwxr-x 2 linuxidc linuxidc 4096 Oct 30 09:41 ./
 drwxr-xr-x 3 linuxidc linuxidc 4096 Oct 30 07:43 ../
 -rw-r--r-- 1 root    root        0 Oct 30 09:41 123

变量内容的删除、替换与替代

变量内容的删除与替换

将local这两个目录删除掉:
[linuxidc@ubuntu ~/Desktop/linux_study 09:47 #85]$echo $path
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
  [linuxidc@ubuntu ~/Desktop/linux_study 09:49 #89]$echo ${path#/*local/bin:}
  /usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

将sbin替换为SBIN:
linuxidc@ubuntu ~/Desktop/linux_study 13:06 #95]$echo ${path/sbin/SBIN}
/usr/local/SBIN:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
[linuxidc@ubuntu ~/Desktop/linux_study 13:06 #96]$echo ${path//sbin/SBIN}
/usr/local/SBIN:/usr/local/bin:/usr/SBIN:/usr/bin:/SBIN:/bin:/usr/games:/usr/local/games

变量的测试与内容替换:
[linuxidc@ubuntu ~/Desktop/linux_study 13:07 #97]$echo $username
  # username可能不存在或者为空字符串
[linuxidc@ubuntu ~/Desktop/linux_study 13:09 #98]$username=${username-root}
[linuxidc@ubuntu ~/Desktop/linux_study 13:10 #99]$echo $username
root                                              # 没有设置,所以主动给予名为root的内容
[linuxidc@ubuntu ~/Desktop/linux_study 13:10 #100]$username="linuxidc"
[linuxidc@ubuntu ~/Desktop/linux_study 13:10 #101]$username=${username-root}
[linuxidc@ubuntu ~/Desktop/linux_study 13:10 #102]$echo $username
linuxidc


username-root 就得变量,被测试的选项 ; username- root 变量的内容,在本范例中,这个部分是在给予未设置变量的内容。当然 username:-root则是在变量内容为空或者是未设置,都能够以后面的内容替换。

如果旧变量不存在,我们就以新变量内容替换;但是若旧变量存在,则新变量内容以旧变量替换。
[linuxidc@ubuntu ~/Desktop/linux_study 13:10 #103]$unset str; var=${str-newvar}
[linuxidc@ubuntu ~/Desktop/linux_study 13:18 #104]$echo var="$var",str="$str"
var=newvar,str=                                        # 因为str不存在,所以var为newvar
[linuxidc@ubuntu ~/Desktop/linux_study 13:19 #105]$str="oldvar";var=${str-newvar}
[linuxidc@ubuntu ~/Desktop/linux_study 13:20 #106]$echo var="$var",str="$str"
var=oldvar,str=oldvar                                    # 因为str存在,所以var等于str的内容

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

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