Shell中eval的用法示例

功能说明:告知shell取出eval的参数,重新运算求出参数的内容。
语  法:eval [参数]
补充说明:eval可读取一连串的参数,然后再依参数本身的特性来执行。
参  数:参数不限数目,彼此之间用分号分开。
1.执行命令行之前扫描它两次,再次运算求出参数的内容。

复制代码代码如下:

[root@localhost blue]# a="ls |more"
[root@localhost blue]# $a                                           #ls

将 | 和 more 看成了参数,而不是将文件按页显示
复制代码代码如下:

ls: cannot access |more: No such file or directory
[root@localhost blue]# eval $a                                    #取出

其参数并再次执行它们
复制代码代码如下:

1
1.cpp
2
2.cpp
3
3.cpp
[root@localhost test]# a="123"
[root@localhost test]# echo '${'"a"'}'                         
${a}
[root@localhost test]# eval echo '${'"a"'}'                #再次执行${a}命令
123 

2.eval取得最后一个参数
复制代码代码如下:

[root@localhost blue]# echo 'eval echo \$$#' > last
[root@localhost blue]# cat last
eval echo \$$#
[root@localhost blue]# ./last 1 2 3 4
4

另外其他高级用法后作补充!
eval是对Bash Shell命令行处理规则的灵活应用,进而构造"智能"命令实现复杂的功能。
上面提及的命令是eval其中一个很普通的应用,它重复了1次命令行参数传递过程,纯粹地执行命令的命令。
其实它是bash的难点,是高级bash程序员的必修之技。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
getopt与getopts类似,也是一个用于解析命令行参数的工具。不同之处在于,getopt可以处理更复杂的命令行参数,支持长选项和短选项的混合使用,而且可以自定义选项的前缀字符。 下面是一个getopt的用法示例: ```shell OPTIONS=abc:d:efgh LONGOPTS=alpha,beta,charlie:,delta:,echo,foxtrot,golf,hotel PARSED=$(getopt --options=$OPTIONS --longoptions=$LONGOPTS --name "$0" -- "$@") if [ $? -ne 0 ]; then exit 1 fi eval set -- "$PARSED" while true; do case "$1" in -a|--alpha) alpha=1 shift ;; -b|--beta) beta="$2" shift 2 ;; -c|--charlie) charlie="$2" shift 2 ;; -d|--delta) delta="$2" shift 2 ;; -e|--echo) echo=1 shift ;; -f|--foxtrot) foxtrot=1 shift ;; -g|--golf) golf=1 shift ;; -h|--hotel) hotel=1 shift ;; --) shift break ;; *) echo "Invalid option: $1" >&2 exit 1 ;; esac done echo "alpha=$alpha" echo "beta=$beta" echo "charlie=$charlie" echo "delta=$delta" echo "echo=$echo" echo "foxtrot=$foxtrot" echo "golf=$golf" echo "hotel=$hotel" echo "args=$@" ``` 在这个例子,我们定义了一个包含多个选项和参数的命令行选项集合。其,a、e、f、g、h是短选项,需要传递0个参数;b、c、d是短选项,需要传递1个参数;alpha、beta、charlie、delta、echo、foxtrot、golf、hotel是长选项,需要传递0个参数。 在调用getopt命令时,我们指定了命令行选项集合和长选项集合,并将解析结果存储在$PARSED变量。如果解析失败,则输出错误信息并退出。 在while循环,我们根据选项名来进行相应的处理。如果是短选项,我们可以直接使用$1来判断选项名,并使用$2来获取对应的参数值;如果是长选项,则需要使用case语句来匹配选项名,并使用$2来获取对应的参数值。如果解析到了" -- ",则表示所有选项已经解析完毕,后面的参数都视为普通参数。 最后,我们输出解析结果,包括所有选项和参数的值,以及普通参数的值。 总体来说,getopt是一个非常强大的命令行参数解析工具,可以处理各种不同类型的选项和参数,并且支持自定义选项前缀字符。但它的语法比较复杂,使用时需要注意。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值