linux – Shell脚本shell里面的shell

我想连接到不同的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的语法是否有效.

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...