【摘要】:内置命令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常用来取得最后一个参数。
内置命令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可以模拟指针。例如:
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。