我有一个bash脚本,需要在shell里面运行一些命令。
#!/bin/bash
echo entering_to_cshell
csh
echo in_cshell
exit
echo exited_from_cshell
为什么此脚本不按预期运行?它只打印entering_to_cshell
并且不会从shell退出。
答案 0 :(得分:2)
使用
csh
你开始一个新的子shell,你的脚本没有被执行。这就是为什么没有执行以下命令的原因。你的脚本等待这个子shell结束,如你所说,从未发生过。
尝试
csh -c "echo in_cshell"
这样您就不会创建一个不受脚本影响的新子shell。
答案 1 :(得分:0)
只需在脚本中调用csh
,即可启动交互式csh子shell。您会注意到,一旦退出csh
会话,您的脚本将继续使用后续回显并退出exit
。
要从您的bash脚本向csh
传递一系列命令,一种方法是使用Here Document语法将命令重定向到csh
。
#!/bin/bash
echo entering_to_cshell
csh <<EOF
echo in_cshell
exit
EOF
echo exited_from_cshell
EOF条目之间的行将被视为由csh
解释的脚本。