SHELL 关于变量的赋值和脚本中的子SHELL中变量的变化

2个要点,1 赋值时,如果是将执行命令的结果赋值给变量,没有(),只是将命令传递给变量,Shell在解释时会用命令替换变量。 2 ()打开子Shell,{}不会。因此()中的变量如果发生的变化,只对在()中有效。

参考以下代码。

#!/bin/bash
Line=(`wc -l ./etc/passwd`)   #注意,如果没有()这个的话,实际上是将命令传递给变量,而不是命令执行后的值。
echo $Line
{
	echo "test the {},the num of lines is $Line"
	let Line=$(($Line+1))
	echo "test the {},the num of lines is $Line"

}
echo "test the after {},the num of lines is $Line" # {}中,没有开子shell,Line的值被改变后,在脚本中被传递。

(
	echo "test the (),the num of lines is $Line"
	let Line=$(($Line+1))
	echo "test the (),the num of lines is $Line"
	echo "test the (),the num of lines is $Line"
)
echo "test the after (),the num of lines is $Line" # ()中,开子shell,Line的值被改变,离开()后,Line的值还是主Shell里改变之前的的值.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值