首页 理论教育 LinuxShell编程:eval二次扫描

LinuxShell编程:eval二次扫描

时间:2023-11-18 理论教育 版权反馈
【摘要】:内置命令eval的格式为:第一次扫描,eval会扫描参数,如果有变量,就进行变量值的替换。第二次将参数作为shell命令,执行它。,a10=10,需要运行10条赋值命令,如果一直到a100,那么需要运行100条重复性的命令。在脚本eval_1.sh中,for循环内的eval后面是赋值命令;脚本的最后三行,选取了三个变量,显示其值。运行脚本:eval_1.sh中的eval是必须的。把eval_1.sh中的eval去掉,得到脚本eval_2.sh:运行eval_2.sh,出错:eval常用来取得最后一个参数。

LinuxShell编程:eval二次扫描

内置命令eval的格式为:

第一次扫描,eval会扫描参数,如果有变量,就进行变量值的替换。第二次将参数作为shell命令,执行它。eval后面常常跟一条命令,所以其命令格式也常认为是:

例如:

从上面的例子还看不出eval有什么作用。假设有个包含一句话的文件a.txt:

上面的命令的输出是cata.txt,还看不见文件a.txt的原本内容。而使用eval命令,经二次扫描,就可以看见了:

假设希望a1=1,a2=2,…,a10=10,需要运行10条赋值命令,如果一直到a100,那么需要运行100条重复性的命令。而运用eval,则不需要运行那么多命令。在脚本eval_1.sh中,for循环内的eval后面是赋值命令;脚本的最后三行,选取了三个变量,显示其值。

运行脚本:(www.xing528.com)

eval_1.sh中的eval是必须的。把eval_1.sh中的eval去掉,得到脚本eval_2.sh:

运行eval_2.sh,出错:

eval常用来取得最后一个参数。例如,脚本eval_last_arg.sh只包含一条命令:

运行eval_last_arg.shJan Feb时,一共有两个位置参数,$#=2,eval进行第一次扫描后,$#被替换为2,命令变为echo$2,第二次扫描,即执行echo$2,第二个位置参数Feb显示出来:

有多个位置参数时:

Bash是没有指针的,使用命令eval可以模拟指针。例如:

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈