eval 用法

本文介绍了一种使用Shell脚本从文件中读取变量名和对应值的方法,并展示了如何在脚本中直接赋值及输出这些变量。通过对比两种不同的变量赋值方式,文章突出了正确语法的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


cat file.txt 

v1 aa
v2 bb
v3 cc
v4 dd
v5 ee
v6 ff




cat eval.sh 

#!/bin/bash

while read name value
do 
eval "${name}=${value}"
done < file.txt

echo "v1 = ${v1}"
echo "v2 = ${v2}"
echo "v3 = ${v3}"
echo "v4 = ${v4}"
echo "v5 = ${v5}"
echo "v6 = ${v6}"



./eval.sh 

v1 = aa
v2 = bb
v3 = cc
v4 = dd
v5 = ee
v6 = ff


cat last.sh


#!/bin/bash

echo "$1, $2, $3, $4, $5, ..."

echo "\$$#"

eval echo "\$$#"


./last.sh aa bb cc


aa, bb, cc, , , ...
$3
cc


cat eval.sh 


#!/bin/bash

while read name value
do 
#eval "${name}=${value}"
${name}=${value}
done < file.txt

echo "v1 = ${v1}"
echo "v2 = ${v2}"
echo "v3 = ${v3}"
echo "v4 = ${v4}"
echo "v5 = ${v5}"
echo "v6 = ${v6}"




./eval.sh 

./eval.sh: line 6: v1=aa: command not found
./eval.sh: line 6: v2=bb: command not found
./eval.sh: line 6: v3=cc: command not found
./eval.sh: line 6: v4=dd: command not found
./eval.sh: line 6: v5=ee: command not found
./eval.sh: line 6: v6=ff: command not found
v1 = 
v2 = 
v3 = 
v4 = 
v5 = 
v6 = 


dell:~/tmp
> zz=ls
dell:~/tmp
> echo $zz
ls
dell:~/tmp
> $zz
eval.sh file.txt last.sh



dell:~/tmp
> yy="aa=bb"
dell:~/tmp
> echo $yy
aa=bb
dell:~/tmp
> $yy
bash: aa=bb: command not found
dell:~/tmp
> aa=bb
dell:~/tmp
> "aa=bb"
bash: aa=bb: command not found
dell:~/tmp
> "ls"
eval.sh file.txt last.sh


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值