Archive:Development/Tutorials/Shell Scripting with KDE Dialogs (zh CN): Difference between revisions

From KDE TechBase
No edit summary
No edit summary
Line 41: Line 41:


* 注意 - 这和基本部件的使用习惯有些不同。如果你对基本的Qt部件比较熟悉,这可能会有点混乱。即便如此,这对遵守接近shell脚本编程的标准来说很重要。
* 注意 - 这和基本部件的使用习惯有些不同。如果你对基本的Qt部件比较熟悉,这可能会有点混乱。即便如此,这对遵守接近shell脚本编程的标准来说很重要。
==== 例3:shell脚本返回的错误值 ====
习惯上总是使用负数来表针错误,但是shell通常将该负数与256相加。这意味著如果你在列举一个所需的变量时出错,系统将返回-2,而$?返回的是254。
<code bash>
[watson@bakerst]$ kdialog --password
kdialog: '<text>' missing.
kdialog: Use --help to get a list of available command line options.
[watson@bakerst]$ echo $?
254
</code>

Revision as of 11:17, 29 September 2007


Development/Tutorials/Shell_Scripting_with_KDE_Dialogs


介绍和程度要求

有一些关于KDE的误解,认为其只是一个图形环境。KDE不仅确实是一个杰出的桌面环境,它同样也对继承自Unix的命令行和脚本编程有良好支持。尤其是,KDE应用程序能够通过命令行加以控制,shell脚本也能够使用一些KDE部件。

要使用这个指导,你将需要对命令行的基础有个基本的熟悉,并且至少有shell脚本编程方面的知识。就像其他任何的编程环境,有效的shell脚本编程需要对该环境扎实的知识。即便如此,你对接下来的这些例子的理解只能是停留在一个很基本的程度。但不利的是,如果你对shell脚本编程十分熟悉,接下来的一些解释将会变得像是有点多余。

这个指导假定你在使用GNU bash shell,或其他直接兼容的产品。其他shell(特别是csh和其他的shell)的用户可能需要对这些例子做相应的修改。

shell脚本编程的技术和用途非常的多。有时一个脚本只对系统有运行的意义(如:corn),而其他时候脚本又是作为用来给用户使用的真正的应用程序。KDE包含一些特性允许你在shell脚本中使用KDE的一些功能,包括保存工作,以及能让你的脚本以为它是一个良好集成的程序集的一部分。

作为一个例子,考虑一个像这样的密码对话框。如果你需要一个用户输入一个密码,你能很容易地通过脚本生成一个看起来像这样的对话框:

kdialog的用法

例1:密码对话框

在设立了脚本中使用KDE对话框的关键字是一个叫做kdialog的应用程序的名字。要想生成一个如上所示的密码对话框,你能使用以下的命令行。

kdialog --password "Please enter the server access code:"

让我们多留意以下这段代码。kdialog的变量被用于控制对话框的类型,该对话框使用变量后的参数来创建具体的对话框。在这个密码对话框的案例中,你使用 --password 来特定该对话框类型,然后跟随着有关参数,其将作为显示在对话框内的文字。

例2:shell脚本的返回值

每次你运行kdialog(或其他任何应用程序),总会有一个返回值表针该应用程序是否按照预期地运行,或是由于某些原因而出错。你可以通过使用$?来读取这个返回值,就如下面的例子。

[watson@bakerst]$ kdialog --password "Some Text" hello [watson@bakerst]$ echo $? 0

  • 注意 - $?变量在每个前台进程推出时都会更新。如果你需要在这之后使用该值,你需要另外地存储它。

在这个例子中,返回值为零。如果被选中的是Cancel键而不是OK键,该值将会等于一。

  • 注意 - 这和基本部件的使用习惯有些不同。如果你对基本的Qt部件比较熟悉,这可能会有点混乱。即便如此,这对遵守接近shell脚本编程的标准来说很重要。

例3:shell脚本返回的错误值

习惯上总是使用负数来表针错误,但是shell通常将该负数与256相加。这意味著如果你在列举一个所需的变量时出错,系统将返回-2,而$?返回的是254。

[watson@bakerst]$ kdialog --password kdialog: '<text>' missing. kdialog: Use --help to get a list of available command line options. [watson@bakerst]$ echo $? 254