【shell 变量和参数】

替换

  • =号的左右两边都不能有空白符
  • 在同一行里用空白字符隔开为多个变量赋值是可以的,可能减少可读性,并且可能是不可移植的
  • 把变量引起来会保留空白字符
  • 一个未初始化的变量没有值,但是似乎它在算术计算中的值是零
a="A  b   C   d" b=
echo "$a"       # 输出:A  b   C   d
echo $a         # 输出:A b C d
echo $((b+5))   # 输出:5
echo a\tbc      # 输出:atbc
echo "a\tbc"    # 输出:a\tbc
echo -e a\tbc   # 输出:atbc
echo -e "a\tbc" # 输出:a	bc
IFS='\'
var="'(]\\{}\$\""
echo $var    # 输出:'(] {}$"
echo "$var"  # 输出:'(]\{}$"

赋值

# = 赋值
a=123
echo $a  # 输出:123
# 用命令赋值
let a=1+2

# for 循环赋值(伪赋值)
for a in 1 2 3 4
do 
    echo -n "$a"
done
# 输出:1234
echo "$a"   # 输出:4

# read 命令 从控制台获取输入的值
read a      # 输入值赋值给变量 a
123
echo "$a"   # 输出:123 

# 命令的输出 赋值
VAR="Hello"
a=`echo "$VAR"` b=$(echo "$VAR")
echo "$a" "$b"  # 输出:Hello Hello

局部变量

#! /bin/bash
# tmp.sh
a=123
function print(){
    local a=456
    echo $a
}
print
echo $a

sh tmp.sh
: """
输出:
456
123
"""

环境变量

  • 每次一个Shell启动时,它都会创建新的合适的环境变量
  • 如果它增加或是更新一个环境变量,都会使这个Shell的环境表得到更新
  • 后继生成的子进程会继承Shell的新环境变量
#! /bin/bash
# subshell.sh
echo $a >> tmp

#! /bin/bash
# tmp.sh
a=123
sh ~/subshell.sh &
export a=456
sh ~/subshell.sh &

unset a   # 销毁 a
: > tmp   # 清空 tmp
sh tmp.sh
cat tmp
: """
输出:

456
"""

位置参数

#! /bin/bash
# tmp.sh
echo $0    # 脚本名字
echo $1    # 第1个参数
echo $2    # 第2个参数
echo $3    # 第3个参数
echo $4    # 第4个参数
echo $5    # 第5个参数
echo $6    # 第6个参数
echo $7    # 第7个参数
echo $8    # 第8个参数
echo $9    # 第9个参数
echo ${10} # 第10个参数
sleep 2 &
sleep 2 &
echo $!    # 后台运行的最后一个进程的PID
echo $?    # 上一个命令退出的状态(0:成功,非0:失败)
echo $*    # 当前shell参数集合(整体)
echo $$    # 表示当前进程ID号码
echo $#    # 参数个数
echo $@    # 当前shell参数集合(逐个读取)
args=$#
echo ${!args}  # 最后一个参数

sh tmp.sh 1 2 3 4 5 6 7 8 9 10

位置参数左移(shift)

#! /bin/bash
# tmp.sh
until [ -z $1 ]
do
    echo $1
    shift
done

sh tmp.sh 1 2 3 4 5 6 7 8 9 10
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sqlboy-yuzhenc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值