在bash脚本中执行tcsh命令

时间:2012-10-26 06:42:10

标签: bash tcsh

在bash脚本中我需要执行这个tcsh命令。此命令在tcsh命令提示符下正常工作,但在我的bash脚本中没有。

eval `/app/modules/0/bin/modulecmd tcsh $variable`

我尝试过添加

等几项内容
/usr/bin/tcsh -c eval `/app/modules/0/bin/modulecmd tcsh $variable`

然后它说:没有这样的文件或目录。

编辑:当前代码:

# hook for some commands

echo 'To be sure the version that are loading exist for your platform plase use: "module aplikation load/version" instead of "module load application". A check will then be done.'
cmd=$(basename "$0") # it givs error here if i start with: tcsh -v xmodule load firefox/3.6.13     
var1=$(echo "$@" | awk '{print $2}' | cut -f1 -d"/") # Gets the application name and put it into var1
var2=$(echo "$@" | grep -o '[^/]*$')  # Gets version name and put it into var2 

if [[ $cmd = "xmodule" ]]
        then
#First if statement: checking if a spesific version of an apllication is requested.
        if  [[ ${@} =~ .*/.* && ${@} =~ ((^)|([ ]))load(($)|([ ])) ]]
        then
           if find /app/$var1 -noleaf -maxdepth 1 -type l -o -type d | grep $var2; then #matching version to symlink or dir in /app/appname/
           echo "$@"
           tcsh -c 'eval `/app/modules/0/bin/modulecmd tcsh $@`'  #execute the module command as normal if version exist
           exit $?
        else
           echo "Could not find $var1 or $var2, one of these things happend:"
           echo "$var1 was misspelled"
           echo "$var2 was misspelled"
           echo "version does exist as a module but not for your platform (see module avail $var1). Printing a list of suported versions:"
                ls /app/$var1/
           echo "exiting: please rety again"
           exit $?
        fi
fi
# Next check. Checking if default module version is loaded
fi
exit

再次编辑:

实际设置环境变量,但不是运行脚本的用户

  
      
  • / app / modules / 0 / bin / modulecmd tcsh load gcc / 4.3.4   setenv LD_LIBRARY_PATH'/app/mpfr/2.4.0/lib:/app/gmp/4.2.4/lib:/usr/lib64/mp​​i/gcc/openmpi/lib64';setenv LD_RUN_PATH'/app/mpfr/2.4.0 /lib:/app/gmp/4.2.4/lib:/app/gcc/4.3.4/lib64:/app/gcc/4.3.4/lib';setenv MANPATH'/app/gcc/4.3.4/man :/app/emacs/23.2/LMWP3/share/man:/app/vim/7.3.021/LMWP3/share/man:/app/xemacs/21.5.29/LMWP3/share/man:/app/j2re/1.6 .0_22 / LMWP3 /人:在/ usr / lib64下/ MPI / GCC /了openmpi /人:在/ usr / share / man的内容:/ opt /任务/人:在/ usr /本地/人:在/ usr / MAN中:/ opt / LSB / man:/ opt / mpich / man:/ opt / gnome / share / man:/ app / modules / 0 / man:/ app / modules / 0 / man'; setenv PATH'/app/gcc/4.3.4/斌:/app/firefox/3.6.12/LMWP3:/app/emacs/23.2/LMWP3/bin:/app/sametime/8.0.2:/app/nxclient/3.4.0.7/LMWP3/bin:/应用/ vim的/7.3.021/LMWP3/bin:/app/xemacs/21.5.29/LMWP3/bin:/app/thunderbird/3.1.6/LMWP3:/app/thunderbird/3.1.6/LMWP3/bin:/app/openoffice /3.2.1/LMWP3/opt/openoffice.org3/program:/app/openoffice/3.2.1/LMWP3/openoffice.org3/program:/app/j2re/1.6.0_22/LMWP3/bin:/app/ica/客户端/ 11.1:/app/acroread/9.4.0/LMWP3/Adobe/Reader9/bin:/首页/ EB rfred / .afs / 0 / RBIN:/home/ebrfred/.afs/0/pbin:/ ENV / SELN / bin中:/home/ebrfred/.afs/0/ibin:在/ usr /心房/ bin中:在/ usr / afsws / bin中:在/ usr / NX / bin中:在/ usr / lib64下/ MPI / GCC /了openmpi /斌:在/ usr / bin中:/ bin中:/ usr / sbin目录:/ sbin目录中:/ opt /任务/斌:在/ usr / local / bin目录:在/ usr / bin中/ X11:在/ usr / X11R6 / bin中:在/ usr /游戏中:/ opt / KDE3 /斌:在/ usr / openwin /斌:/选择/交叉/斌:/ usr / lib中/ MIT /斌:/ usr / lib中/ MIT / sbin目录中:/ opt / GNOME /斌:/ usr / lib中/ QT3 /斌:在/ usr / DT /斌:在/ usr / CCS / bin中:/应用/ ARC / 0 /箱'; setenv LMFILES '/env/common/modules/firefox/3.6.12:/env/common/modules/acroread/9.4.0:/env/common/modules/flashplayer/10.1:/ ENV /普通/模块/ ICA / 11.1:/env/common/modules/j2re/1.6.0_22:/env/common/modules/openoffice/3.2.1:/env/common/modules/thunderbird/3.1.6:/ ENV /普通/模块/ xemacs的/ 29年5月21日:/env/common/modules/vim/7.3.021:/env/common/modules/nxclient/3.4.0.7:/env/common/modules/sametime/8.0.2 :/env/common/modules/emacs/23.2:/home/ebrfred/.afs/0/imodules/isit_modules:/env/common/modules/gmp/4.2.4:/env/common/modules/mpfr/2.4。 0:/env/common/modules/gcc/4.3.4'; setenv LOADEDMO DULES'firefox / 3.6.12:acroread / 9.4.0:flashplayer / 10.1:ica / 11.1:j2re / 1.6.0_22:openoffice / 3.2.1:thunderbird / 3.1.6:xemacs / 21.5.29:vim / 7.3。 021:nxclient / 3.4.0.7:sametime / 8.0.2:emacs / 23.2:isit_modules:gmp / 4.2.4:mpfr / 2.4.0:gcc / 4.3.4'; setenv PKG_CONFIG_PATH'/app/gcc/4.3.4 / lib / pkgconfig:/ opt / gnome / lib64 / pkgconfig:/ opt / gnome / share / pkgconfig'; + exit 0
  •   

1 个答案:

答案 0 :(得分:1)

man tcsh。您必须引用eval ...命令:

tcsh -c "eval \`/app/modules/0/bin/modulecmd tcsh $variable\`"

否则bash将解释反引号命令。

相关问题