shell编程之变量学习小结

在Bash中,变量的默认类型都是字符串型
变量的分类
1、用户自定义变量:变量可以自定义,但是对系统生效的环境变量名和变量作用是固定的。

2、环境变量:这种变量中主要保存的是和系统操作环境相关的数据。
3、位置参数变量:这种变量主要是用来向脚本当中传递参数或数据的,变量名不能自定义, 变量的作用是固定的

4、预定义变量:是Bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的。

用户自定义变量   变量名=变量值     #  =号两边不能有空格
x=5
name="jie cao"

echo $变量名
ex: echo $x       #shell在变量定义的时候不用$符号但是在调用变量的时候需要用$符号
     echo $name

变量的叠加
x=123
a=123 定义变量

b="$a"456

c=${a}789      #都是在变量a下追加

set a 变量查看 注意不要带 $

set -u 调用没申明变量时的报错显示

unset 变量名 注意不带 $ ,删除变量
set 查询系统中的所有环境变量

set -u 查询未定义变量时报错。

环境变量

1.环境变量与用户自定义变量的区别
     环境变量是全局变量
     用户自定义变量是局部变量。
     用户自定义变量只在当前的 shell 中生效,环境变量在当前shell和这个shell的所有子shell中生效。
     用户可以自定义环境变量,但对系统生效的环境变量名和变量作用是固定的。

2.用户自定义环境变量
export 变量名=变量值
 或
变量名=变量值
export 变量名

3.查看环境变量
set 查看所有变量
env 查看环境变量

4.删除环境变量
unset 环境变量名

5.常用的环境变量
HOSTNAME:主机名
SHELL:当前的 shell
 TERM:终端环境
HISTSIZE:历史命令条数
SSH_CLIENT:当前操作环境是用 ssh 连接的,这里记录客户端 ip
SSH_TTY:ssh 连接的终端是 pts/1
USER:当前登录的用户
PATH:系统搜索命令的路径
要想直接通过脚本名执行自己的脚本: 
(1)将脚本拷贝至 PATH 中的任意目录下(不建议这样做),例如:
$ cp hello.sh /bin/ 

 (2)将脚本所在目录添加到 PATH 变量中,例如:
$ PATH="$PATH":/root/sh 但系统重启后失效

当前语系变量
locale
#查询当前系统语系
LANG:定义系统主题语系的变量
LC_ALL:定义整体语系的变量
echo $LANG   #查看系统当前语系
locale -a|more  #查看linux支持的所有语系

$n :n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数需要用大括号包含,如${10}
$*:这个变量代表命令行中所有的参数,$* 把所有的参数看成一个整体。
$@:这个变量也代表命令行中所有的参数,不过 $@ 把每个参数区分对待。
$#:这个变量代表命令行中所有参数的个数。


#!/bin/bash
num1=$1
num2=$2
sum=$(($num1 + $num2))  #$((----)) 双小括号内的变量会自动进行数值运算,运算符两边要有空格。
echo $sum

$*  :将输入的所有变量看成一个整体
$@  :将每个变量分开来看

在for循环里使用 $@和$*必须使用双引号括起来。

$*与$@的区别
#!/bin/bash
for i in "$*"                   #$*中的所有参数看成是一个整体,所以这个for循环只会循环一次
    do
        echo "The paramter is:$i"
    done
for y in "$@"                #$@中的每个参数都看成独立的,所以$@中有几个参数,就会循环几次
    do
        echo "The paramter is:$y"
    done

"$*"与"$@"在for循环中必须要用双引号括起来


!/bin/ksh
echo "hello world"
for i in "$*"
        do
                echo "$i"
        done
for y in "$@"
        do
                echo "The paramter is:$y"
        done
echo " $#"

-> ./canshu1 11 22 2 33
./canshu1[1]: !/bin/ksh: not found [No such file or directory]
hello world
11 22 2 33
The paramter is:11
The paramter is:22
The paramter is:2
The paramter is:33
 4

预定义变量:
echo $?   上条命令是否正确执行。返回值为0,则上一条命令正确;非0则不正确。

$$ 显示当前进程的进程号

$! 后台运行的最后一个进程的进程号。

read 运行程序后输入。可以输入提示信息。向脚本当中传递用户需要的值

-p “提示信息”   输入前显示提示信息
-t  “秒数”  等待时间
-s   隐藏输入数据
-n 字符数:只接受指定的字符数。

#!/bin/bash
read -p "please input your name:" -t 30 name #-t  “秒数”  等待时间
echo $name

read -p "please input your passwd:" -s passwd  #-s 隐藏输入数据
echo -e "\n"
echo $passwd

read -p "please input your sex[M/F]:" -n 1 sex #-n 字符数:只接受指定的1个字符数。
echo -e "\n"
echo $sex

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值