linux shell命令通配符,linux – 如何检测使用通配符(星号*)作为shell脚本的参数?...

shell扩展了通配符.到运行脚本时,通配符已经扩展,并且脚本无法判断参数是通配符还是显式列表.

这意味着您的脚本需要来自其他非脚本的帮助.特别是,在命令行处理之前运行的东西.那个东西是别名.这是你的别名

alias myscript='set -f; globstopper /usr/bin/myscript'

这样做是设置一个名为’myscript’的别名,所以当有人输入’myscript’时,这就是运行的东西.别名做了两件事:首先,它用set -f关闭通配符扩展,然后它运行一个名为globstopper的函数,传入脚本的路径,以及其余的命令行参数.

那么globstopper功能是什么?这个:

globstopper() {

if [[ "$2" == "*" ]]

then echo "You cannot use a wildcard"

return

fi

set +f

"$@";

}

这个功能做了三件事.首先,它检查脚本的参数是否是通配符(警告:它只检查第一个参数,它只检查它是否是一个简单的星;延伸它以覆盖更多的情况留下作为练习读者).其次,它重新开启了通配符扩展.最后,它运行原始命令.

为此,您需要能够在用户的shell中设置别名和shell函数,并要求您的用户使用别名而不是脚本.但如果你能做到这一点,它应该有效.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值