微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

bash – 如果grep找到它正在看的东西,X else Y

在这个声明中,如果路径/ app / $var1(应用程序名称)中存在一个版本($var2),我正在尝试匹配
if 
find /app/$var1 -maxdepth 1 -type l -o -type d | grep $var2 #results in a nice list where i can manually get a true match.
# if match is found then execute command.
$realcmd "$@"
    rc=$?
    exit $rc
else
echo "no match,the version you are looking for does not exist"
fi

当前代码
包括我的所有代码(未清除).
命令我运行:“./xmodule加载firefox / 3.6.12”
此版本将退出

#!/bin/bash
# hook for some commands

#echo $@  #value of sting that is entered after "xmodule"

cmd=$(basename "$0")
#echo "called as $cmd"

if [[ $cmd = "xmodule" ]]
then
    realcmd='/app/modules/0/bin/modulecmd tcsh'

    # verify parameters
fi
# check if $@ contains value "/" to determine if a specific version is requested.
case "$@" in
*/*)
    echo "has slash"
var1=$(echo "$@" | grep -Eio '\s\w*') # Gets the aplication name and put it into var1
echo $var1   # is not printed should be "firefox"
var2=$(echo "$@" | grep -o '[^/]*$')  # Gets version name and put it into var2 
echo $var2 
# Checking if version number exist in /app/appname/
if find /app/$var1 -noleaf -maxdepth 1 -type l -o -type d | grep $var2; then
    $realcmd "$@"
    exit $?
else
    echo "no match,the version you are looking for does not exist"
    # Should there be an exit here?
fi
    ;;

*)
    echo "doesn't have a slash"
    ;;
esac

输出
我的电脑[9:55 am] [user / Desktop / script] – > ./xmodule加载firefox / 3.6.12
“有斜线

3.6.12
没有匹配,你正在寻找的版本不存在

如果有空白(3.6.1以上)应该有应用程序名称.我现在意识到这必须是我的问题,它的使用我可能只是/应用程序的路径.
但是我不认为我改变了代码的那部分内容.

您可以使用整个grep管道作为if语句的条件.使用grep -q来保持它不会打印它找到的匹配(除非你想打印).我也简化了退出(如果你要立即使用它,就不需要在变量中存储$?).结果如下:
if find /app/$var1 -maxdepth 1 -type l -o -type d | grep -q $var2; then
    $realcmd "$@"
    exit $?
else
    echo "no match,the version you are looking for does not exist"
    # Should there be an exit here?
fi

BTW,因为你将在$realcmd之后立即退出,你可以使用exec $realcmd“$@”来替换shell的$realcmd,而不是运行$realcmd作为一个子进程.

原文地址:https://www.jb51.cc/bash/386518.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐