目录
变量的定义
1.什么是变量
变量就是内存一片区域的地址
2.变量存在的意义
命令无法操作一直变化的目标
用一串固定的字符来表示不固定的目标可以解决此问题
Shell中定义变量的方法
环境级别
export a=1
在环境关闭后变量会失效
在第一个shell中 export a=1,此时可以生效
在新环境(第二个shell中)查看时,变量定义失效
用户级别 仅对设置的用户生效
vim ~/.bash_profile
export a=1
vim ~/.bash_profile
source ~/.bash_profile 此时在两个shell中执行完source命令后,变量都可生效
但切换到其他用户时无法使用
系统级别 所有人可用
vim /etc/profile
export a=1
变量名称定义
可使用 “字符” “_” “数字” ,不能用数字开头
建议:
变量名称短,全用大写字符
变量名称长,用"_"区分子类
例如:
WESTOS
Westos_dd
Westos_ss
变量的转译与声明
转译
\ #转译单个字符
"" #弱引用,批量转译字符 不能转译 "\" "`" "$" "!"
'' #强引用
声明
a=1
echo $ab
echo ${a}b
a=(`ls -l file`) #将a定义为命令
echo $a
echo ${a[0]} #查看命令的第0列
echo ${a[3]}
echo ${a[-1]} #查看命令的倒数第一列
echo ${a[*]} #查看命令的全部列(下同)
echo ${a[@]}
Linux命令中的别名设定
alias sss='cat' #临时设定
环境1中设定,可用
切到环境2,gg
vim ~/.bashrc
alias sss='cat' #只针对用户生效
vim /etc/bashrc
alias sss='cat' #针对系统所有用户生效
unalias sss #删除当前环境中的alias
用户环境变量的更改
环境变量:
用户在操作系统实时用到的命令搜索路径
设定方式:
~/.bash_profile #用户级
export PATH=$PATH:/mnt
/etc/bash_profile #系统级
export PATH=$PATH:/mnt
此时不添加绝对路径就可执行脚本
脚本中的传参
非交互模式:
$0 is test.sh $0 是脚本本身
$1 is westos $1 是脚本后输入的第一串字符,2、3...以此类推
$2 is linux
$3 is sss
$# is 3 # 指脚本后输入的所有字符串个数
$* is westos linux sss $* 指脚本后所输入的所有字符“westos linux sss”
$@ is westos linux sss $@ 指脚本后所输入的所有字符"westos" "linux" "sss"
$*与$@的区别: