3

我有一个 bash 脚本,需要在其中的 cshell 中运行一些命令。

#!/bin/bash

echo entering_to_cshell
csh
echo in_cshell
exit
echo exited_from_cshell

为什么这个脚本没有按预期运行?它只打印entering_to_cshell并且不会从 cshell 退出。

4

2 回答 2

2

通过使用

csh

你启动一个新的子shell,你的脚本没有被执行。这就是为什么没有执行以下命令的原因。您的脚本等待此子shell 结束,正如您所指出的,这永远不会发生。

尝试

csh -c "echo in_cshell"

这样您就不会创建不受脚本影响的新子shell。

于 2013-02-19T09:31:20.680 回答
0

通过简单地调用csh您的脚本,您将启动一个交互式 csh 子shell。您会注意到,一旦您退出csh会话,您的脚本将继续执行后续的 echo 和 quiting on exit

要将一系列命令传递给cshbash 脚本,一种方法是使用Here Document语法将命令重定向到csh.

#!/bin/bash

echo entering_to_cshell

csh <<EOF
echo in_cshell
exit
EOF

echo exited_from_cshell

EOF 条目之间的行将被视为由csh.

于 2013-02-19T09:38:27.570 回答