我想连接到不同的shell(csh,ksh等),并在每个切换的shell中执行命令.
以下是反映我意图的示例程序:
#!/bin/bash
echo $SHELL
csh
echo $SHELL
exit
ksh
echo $SHELL
exit
既然,我不熟悉Shell脚本需要一个如何实现这一点的指针.任何帮助将非常感激.
解决方法:
如果只想执行一个命令,可以使用-c选项
csh -c 'echo $SHELL'
ksh -c 'echo $SHELL'
如果要在子shell中执行多个命令甚至整个脚本,可以使用bash的here-document功能并在子shell上使用-s(从stdin读取命令):
#!/bin/bash
echo "this is bash"
csh -s <<- EOF
echo "here go the commands for csh"
echo "and another one..."
EOF
echo "this is bash again"
ksh -s <<- EOF
echo "and Now, we're in ksh"
EOF
请注意,您无法通过echo $SHELL轻松检查您所在的shell,因为父shell将此变量扩展为文本/././bash.如果要确保子shell工作,则应检查特定于shell的语法是否有效.