Bash Shell执行变量中的命令

你希望在脚本中根据情况执行不同的命令。这该怎么实现呢?

解决方案

该问题有很多种解决方案,这正是脚本的用武之地。后续章节会讨论可以搞定此问题的各种编程构件,如 if/then/else、case 语句等。但这里要给出一种略有不同的方法,它揭示了 bash 自身的一些东西。我们不仅可以将变量内容用于参数,还可以用于命令本身。

FN=/tmp/x.x
PROG=echo
$PROG $FN
PROG=cat
$PROG $FN

讨论

我们可以将命令名保存在变量($PROG)中,然后在需要命令名的地方引用该变量,bash 会使用变量($PROG)的值作为要执行的命令。bash 解析命令行,用相应的值替换其中的变量,最后将替换后的结果作为最终命令,就像是我们一字不差地敲入那样。

 注意你所使用的变量名。有些程序(如 InfoZip)使用环境变量(如 $ZIP$UNZIP)向自身传递设置,如果你做了类似 ZIP=/usr/bin/zip 的操作,少不了要抓耳挠腮上几天,搞不明白为什么该程序可以在命令行上正常运行,偏偏在脚本中就不行了。相信我们,这都是从惨痛教训中总结出的经验。另外,好好读读手册。

酷客网相关文章:

赞(0)

评论 抢沙发

评论前必须登录!