在同一脚本中,我想使用一些CSH命令和一些BASH命令。 尽管我遵循各个shell的不同语法,但一个接一个地调用却给我带来了问题。我想知道代码中的错误 感谢您的建议!
我是Shell的初学者,尤其是CSH。但是我得到的代码完全是用CSH编写的。由于我对CSH有所了解,因此我想通过包含BASH命令来调整现有的CSH代码,我对此很满意。当我在CSH之后通过调用!#/ bin / bash尝试BASH命令时,它给出了一些错误。我想知道我是否缺少任何选择!
#!/bin/csh
----
----
----
#!/bin/bash
dir2in="/nethome/achandra/NCEI/CCSM4_Historical/Forecasts"
filin2 ="ccsm4_0_cfsrr_Fcst.${ENS}.cam2.h1.${yyear[${iimonth}]}-${mmon[${iimonth}]}-${ssday}-00000.nc"
cp $dirin/$filin /nethome/achandra/NCEI/CCSM4_Historical_Forecasts/
ln -s /nethome/achandra/NCEI/CCSM4_Historical/Forecasts/$filin /nethome/achandra/NCEI/CCSM4_Historical_Forecasts/"${$filin%.nc.cdo}.nc"
#!/bin/csh
我遇到诸如以下的错误 “ dirin:未定义的变量。”
答案 0 :(得分:1)
您在这里要求“将一种语言嵌入另一种语言”,正如@Bayou所解释的那样,不直接支持该语言。也许您被HTML世界所宠爱了,您可以在它们之间挤压CSS和Javascript,也可以使用一些服务器端PHP或Ruby之类的东西。
最接近此的是此处的文档。如果您在bash脚本中编写a
csh <<CSH_END
your ...
csh ....
commands ...
go here ...
CSH_END
这些命令在csh驱动的子进程中执行。它以相同的方式与bash相反。确保终止符(在我的示例中为CSH_END)从第1列开始。
这是否对您的应用程序有效,我不能说,因为在原始脚本中以相同进程运行的事物现在在不同进程中运行。
答案 1 :(得分:0)
您不能像您建议的那样混淆它们。这就像问“我可以在Python脚本中使用PHP代码”一样。但是,大多数外壳程序都具有运行命令(-c
)的选项,就像csh does一样。在sh脚本中使用Bash:
#! /bin/sh
CONDITION=$(/bin/bash -c "[[ 1 > 2 ]] || echo no")
echo $CONDITION
exit 0
否则,您可以创建单独的文件并执行它们。
#! /bin/sh
CONDITION=$(./bash-script.sh)
echo $CONDITION
exit 0
您当然应该使用csh
而不是sh
。我的两个脚本都将输出以下文本。
$ ./test.sh
no