我有一个 bash 脚本,需要在其中的 cshell 中运行一些命令。
#!/bin/bash
echo entering_to_cshell
csh
echo in_cshell
exit
echo exited_from_cshell
为什么这个脚本没有按预期运行?它只打印entering_to_cshell
并且不会从 cshell 退出。
通过使用
csh
你启动一个新的子shell,你的脚本没有被执行。这就是为什么没有执行以下命令的原因。您的脚本等待此子shell 结束,正如您所指出的,这永远不会发生。
尝试
csh -c "echo in_cshell"
这样您就不会创建不受脚本影响的新子shell。
通过简单地调用csh
您的脚本,您将启动一个交互式 csh 子shell。您会注意到,一旦您退出csh
会话,您的脚本将继续执行后续的 echo 和 quiting on exit
。
要将一系列命令传递给csh
bash 脚本,一种方法是使用Here Document语法将命令重定向到csh
.
#!/bin/bash
echo entering_to_cshell
csh <<EOF
echo in_cshell
exit
EOF
echo exited_from_cshell
EOF 条目之间的行将被视为由csh
.