微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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的语法是否有效.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐