电脑技术学习

对话 UNIX: Squirrel--可移植的 shell 和脚本语言

dn001

  使用 Squirrel 编写脚本

  让我们看一看一个 Squirrel Shell 脚本的示例。清单 2 展示了文件 listing2.nut,此脚本将递归地列出您的主目录的内容。

  清单 2. listing2.nut

 
#!/usr/bin/env squirrelsh 
 
function reveal( filedir ) { 
 if ( !exist( filedir ) ) { 
  return; 
 } 
   
 if ( filename( filedir ) == ".." || filename( filedir ) == "." ) { 
  return; 
 } 
   
 if ( filetype( filedir ) == FILE ) { 
  printl( filename( filedir, true ) ); 
  return; 
 } 
  
 printl("Directory: " + filename( filedir, true) ); 
 local names = readdir( filedir ); 
  
 foreach( index, name in names ) { 
  reveal( name ); 
 } 
} 
 
local previous = getcwd(); 
 
chdir( "~" ); 
 
reveal( getcwd() ); 
 
chdir( previous ); 
 
exit( 0 ); 

  按照规定,每个 shell 脚本的第一行将向操作系统表明要启动哪个程序来解释脚本。通常,这一行会显示 #! /usr/bin/bash 或 #! /bin/zsh 以从某个位置启动特定 shell 或解释器。

  #!/usr/bin/env squirrelsh 有一些不同。它启动了一个特殊的程序 env,此程序又启动 PATH 变量中找到的第一个 squirrelsh 实例。因此,可以修改 PATH 变量以支持某个程序的本地版本 — 即您自己的、修改后的 squirrelsh 副本,位于 $HOME/bin/squirrelsh — 而不要修改 shell 脚本的内容。

标签: