Linux入门 29_Linux中shell脚本中的变量及变量传参详解
1、变量的定义变量本质上就是一片内存区域的地址即寻址符号的别名,当我们运行shell脚本时命令无法操作一直变化的目标,所以需要引入变量来解决此问题,即用一串固定的字符来表示不固定的目标。2、shell脚本中变量的定义方法1、环境级别只在当前在环境生效,关闭后变量失效在当前shell环境中定义变量a的值为2时,使用echo $a可以看到变量的值,编写脚本test.sh在脚本中写入echo $a,运行
1、变量的定义
变量本质上就是一片内存区域的地址即寻址符号的别名,当我们运行shell脚本时命令无法操作一直变化的目标,所以需要引入变量来解决此问题,即用一串固定的字符来表示不固定的目标。
2、shell脚本中变量的定义方法
1、环境级别
只在当前在环境生效,关闭后变量失效
在当前shell环境中定义变量a的值为2时,使用echo $a可以看到变量的值,编写脚本test.sh在脚本中写入echo $a,运行该脚本显示结果为空,这是因为在当前shell环境中定义的变量是环境级别的变量,即只针对当前shell环境生效且在环境关闭后变量失效,脚本运行时是在当前shell中再开了一个shell环境(#!/bin/bash指定的环境),在子shell环境中没有变量a的定义,所以运行脚本显示结果为空
2、用户级别
编辑 ~/.bash_profile文件,在其中添加变量a的声明语句export a=1,source重新读取该文件使设定生效,给当前shell中的所有子程序环境传递变量值,此时运行test.sh脚本可以看到变量a的值,但当切换到westos用户中,再次运行test.sh脚本显示结果为空,这是因为编辑 ~/.bash_profile文件声明的变量是用户级别的变量,当切换到另一用户时变量失效
vim ~/.bash_profile
source .bash_profile #配置立即生效
export a=2
3、系统级别
编辑/etc/profile文件来设定对于所有用户的所有环境都生效的系统级别的变量,但此文件内容较多,出于稳定性考虑不进行改动
vim /etc/profile
export a=2
我们一般选择在/etc/profile.d/目录下新建脚本文件写入变量a的声明语句export a=2来设定用户级别的变量,此时切换到westos用户中运行test.sh脚本可以看到变量a的值
vim /etc/profile.d/westos.sh
source /etc/profile.d/westos.sh
export a=2
变量名称"字符" “_” “数字”,不能用数字开头
推荐使用
变量名称短全用大写字符
变量名称长用_区分子类
WESTOS
Westos_Linux
westoS_Linux
3、变量的申明
1、转译
\ #转译单个字符
"" #弱引用,批量转译个数字符 不能转译"\" "`" "$" "!"
'' #强引用
2、声明
a=1 #在shell中直接定义a的值为1
echo $ab #(默认会寻找ab这个整体的变量的值)
echo ${a}b #b这样才能声明a是变量
3、变量的数组
a=(1 2 3 4 5)
a$[a[@] :起始元素的id:元素个数]
echo ${a[0]}
echo ${a[-1]}
echo ${a[*]}
echo ${a[@]}
echo ${a[@]:0:3}
echo ${#a[@]}
unset a[n] #删除数组中的第n个元素
unset a #删除a这个数组
4、Linux中命令的别名设定
alias xie='vim' 临时设定
vim ~/.bashrc
alias xie='vim' 只针对当前用户生效
vim /etc/bashrc
alias xie='vim' 针对系统所有用户生效
unalias xie 删除当前环境中的alias
5、利用命令的执行结果设定变量
1)直接利用命令执行结果
$()|`` ##优先执行
TEST=`hostname` TEST=$(hostname)
2)脚本中的传参
非交互模式:
$0 is /mnt/test.sh ##脚本本身
$1 is westos ##脚本后所输入的第一串字符
$2 is linux
$3 is redhat
$* is westos linux redhat ##脚本后所输入的所有字符"westos linux redhat" 整体
$@ is westos linux redhat ##脚本后所输入的所有字符'westos' 'linux' 'redhat'单个单个出现
$# is 3 ##脚本后所输入的字符串个数
交互模式传参:
read WESTOS ##对westos赋值
read -p "please input word:" ##输出提示语
-s ##隐藏输入内容
6、脚本函数
定义:
程序的别名
设定方式:
WORD()
{
action1
action2
}
WORD 在脚本中就代表action1 action2这两个动作
更多推荐
所有评论(0)