温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

PATH中的shell脚本是否可以用来检测输入的选项$1

发布时间:2021-09-16 16:59:19 来源:亿速云 阅读:156 作者:柒染 栏目:开发技术

PATH中的shell脚本是否可以用来检测输入的选项$1,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

下面是例子001:

#!/bin/sh # inpath - Verifies that a specified program is either valid as is, #  or that it can be found in the PATH directory list. in_path() {  # Given a command and the PATH, try to find the command. Returns  # 0 if found and executable, 1 if not. Note that this temporarily modifies  # the IFS (input field separator) but restores it upon completion.  cmd=$1    path=$2     retval=1  oldIFS=$IFS  IFS=":"  for directory in $path  do   if [ -x $directory/$cmd ] ; then    retval=0   # if we're here, we found $cmd in $directory   fi  done  IFS=$oldIFS  return $retval } checkForCmdInPath() {  var=$1  # The variable slicing notation in the following conditional  # needs some explanation: ${var#expr} returns everything after  # the match for 'expr' in the variable value (if any), and  # ${var%expr} returns everything that doesn't match (in this  # case, just the very first character. You can also do this in  # Bash with ${var:0:1}, and you could use cut too: cut -c1.  if [ "$var" != "" ] ; then   if [ "${var%${var#?}}" = "/" ] ; then    if [ ! -x $var ] ; then     return 1    fi   elif ! in_path $var $PATH ; then    return 2   fi  fi }   if [ $# -ne 1 ] ; then  echo "Usage: $0 command" >&2 ; exit 1 fi checkForCmdInPath "$1" case $? in  0 ) echo "$1 found in PATH"         ;;  1 ) echo "$1 not found or not executable"  ;;  2 ) echo "$1 not found in PATH"       ;; esac exit 0

这脚本目的是用来检测输入的选项$1是否在PATH中。

这脚本有几个地方值得注意的:
1)它运用了函数嵌套,在checkForCmdInPath里嵌套了in_path函数。
2)if [ "${var%${var#?}}" = "/" ] 这语句中的${var%${var#?}}是显示变量的第一个字符,也可以用${varname:1:1} 或$(echo $var | cut -c1)替代。
3) elif ! in_path $var $PATH ; then 这意思是如果in_path $var $PATH 执行结果不为0的话则
问题:
发现输入 echo , echo_err, /etco_err 都返回正确结果,但输入 /etc/echo_right (存在着执行文件但不在PATH中)却返回found in PATH。我想这脚本还有需要完善的地方。

看完上述内容,你们掌握PATH中的shell脚本是否可以用来检测输入的选项$1的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI