找人做自建房图纸去哪个网站,元器件网站开发客户,wordpress 中文文档下载,wordpress 国外空间与Shell变量相关的几个命令#xff1a; 变量只在当前Shell中生效. source 这个命令让脚本影响他们父Shell的环境#xff08;. 可以代替source命令#xff09; export 这个命令可以让脚本影响其子Shell的环境 () unset 从环境中删除变量 其他几个与变量有关的命令#xff1… 与Shell变量相关的几个命令 变量只在当前Shell中生效. source 这个命令让脚本影响他们父Shell的环境. 可以代替source命令 export 这个命令可以让脚本影响其子Shell的环境 () unset 从环境中删除变量 其他几个与变量有关的命令 declare: 用于显示或设置变量 let: 用于求整数表达式的值 local: 用于创建不能传给子Shell的变量 这个命令仅在过程内部有效 readonly: 用于显示或者设置只读变量 set: 用于设置或者重置各种Shell选项(不仅用于变量) shift: 用于移动位置变量 typeset: 用于显示或者设置变量(同declare) 变量赋值 logfilestdout.log
echo $logfil 1、变量赋值——没有类型根据赋值的类型决定变量类型可以多次随意赋值。赋值号两边不能有空格 1显示定义VARvalue 变量声明时使用的引号不会被保留当变量值中有空格时必须使用引号 2读取read VAR 一次读入一行 可以一次读入多个变量read。 read firstname lastname
输入steve Parker Smith 以空格分最后一个变量两个
输入steve 给的少后一个变量为空字符串一直存在于shell中可以在当前shell中用set | grep name查看 从文件读入 read password /etc/passwd读入一行
while read passwd
doecho $passwd
done /etc/passwd一直循环读直到不再输入 read -p “what file do you want to test? filename 命令替换命令赋值VARdate、 VAR$(date)数值计算cexpr $a 4、clet $a 4 、$(($a$b)) 但也有点区别有的shell不支持是否有对非数值进行的先验expr没有将变量值设置为某个给定命令的输出其时是第一种赋值方式的变种 TODAYdate %A动态赋值 引用变量 2、引用变量——的格式是${变量名} $(variable)bar echo $variable bar ${variable}bar 访问不存在的变量只会返回空字符串或0具体取决与上下文所以当将某个变量名写错时不会报错还能有结果; 变量名区分大小写 3、支持一维数组变量 [lixnlocalhost ~]$ Users(zsan lisi wangwu zhangsan lisi) 定义一维数组
[lixnlocalhost ~]$ echo $Users 索引
zsan
[lixnlocalhost ~]$ echo ${Users[0]}
zsan
[lixnlocalhost ~]$ echo ${Users[2]}
wangwu
[lixnlocalhost ~]$ echo ${Users}
zsan
[lixnlocalhost ~]$ echo ${Users[*]}
zsan lisi wangwu zhangsan lisi
[lixnlocalhost ~]$ echo ${#Users[*]} 返回数组长度
5
[lixnlocalhost ~]$ echo ${#Users[2]} 返回元素值的长度
6
[lixnlocalhost ~]$ Users[1]wlm 修改值
[lixnlocalhost ~]$ Account(${Users[*]}) 数组之间赋值
[lixnlocalhost ~]$ echo ${Account[*]}
zsan wlm wangwu zhangsan lisi 特殊变量 ${#var} 变量的长度 特殊变量由bash自动定义和赋值用户不能修改。 $$当前进程号 $?前一个命令的退出状态0表示执行成功1标志执行失败 $0存储命令本身——位置参数 $1-$n依次代表命令行参数当大于9时用{}括起来如${10}——位置参数 $#命令行参数的个数不包括命令本身 $*保存了全部的命令行参数。不包含命令本身 $ $!后台程序的pid 其他 basename命令——去掉位置参数的路径信息所以./scropt.sh、/usr/local/bin/script.sh等会被转化为script.sh Myname is basename $0 shift命令——多用于“下一个参数”shift内置命令每次调用时将所有参数进行一次移位首先截去$1,然后截去$2....无法将移位逆向进行。 shift也可以一次截去多个变量shift 3 或者 shift shift shift多用后者 #!/bin/bash
echo My name is basename $0 - I was called as $0
echo I was called with $# parameters.
count1
while [ $# -ge 1 ]; doecho Parameter number $count is: $1let count$count1shift
done[lixnFedora24 bash_learn]$ ./shift.sh
My name is shift.sh - I was called as ./shift.sh
I was called with 0 parameters.
[lixnFedora24 bash_learn]$ ./shift.sh one two three
My name is shift.sh - I was called as ./shift.sh
I was called with 3 parameters.
Parameter number 1 is: one
Parameter number 2 is: two
Parameter number 3 is: three $*和$的使用与区别 删除变量——unset myvar将变量赋值为空字符串也能实现变量的删除但与unset不完全相同 转载于:https://www.cnblogs.com/daduryi/p/6627660.html