1

例如,我无法从另一个 c shell 脚本访问在 KornShell (ksh) 脚本中声明的变量,

vi script.ksh
set MyUser=root
set MyPassword=shroot
exit

vi script.csh
. /script1.ksh
echo $MyUser
echo $MyPassword
exit

这里涉及的问题是它无法从script2.csh 中的script1 .ksh 访问变量MyUser 和MyPassword。

你能在这种情况下提出建议吗?

4

1 回答 1

1

ksh脚本没有做你认为它在被使用时所做的事情ksh;它$1首先设置为MyUser=root然后MyPassword=shroot

但是,当您从 C shell 脚本获取它时,因为语法与 C shell 兼容(用 选中tcsh),您将设置这两个变量。如果您从 Bourne-shell 衍生脚本获取脚本exit,则脚本末尾的ksh将导致 shell 退出;它似乎不会导致 C shell exit.

所以,你得到的是一个奇怪的混合体。通常,您会坚持使用一种语言并专门使用它。在需要使用另一个 shell 的地方,您可以这样做,但您只需运行为另一个 shell 编写的脚本。您可以使用环境变量与其他脚本通信。您通常不会尝试编写可被 C shell 和 Bourne-shell 衍生品使用的源代码;有太多不同的语法。

于 2014-01-06T17:25:44.207 回答