在此语句中,我尝试匹配路径 /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 load 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
输出:mycomputer [9:55am] [user/Desktop/script] -> ./xmodule load firefox/3.6.12 '有斜线
3.6.12 不匹配,你要找的版本不存在
有空格的地方(3.6.1 以上)应该有应用程序名称。我现在意识到这一定是我的问题,因为它使用的路径可能只是 /app。但我不认为我在这部分代码中进行了任何更改。