熟悉Linux的朋友肯定都知道bash,它是Linux默认的命令行解释程序,熟悉Solaris的也应该知道csh,

但是csh用起来比较费劲,于是乎产生了Korn Shell (http://www.kornshell.com),ksh综合了csh的强

大功能和bash的易用性,作为一名忠实的Linuxer,你不得不把这一强大的工具牢牢掌握!

关于shell的用法及shell编程方面的资料很多,但是专门讲解ksh的似乎挺少的,强子在此也结合几篇E

文加上一些自己的实践尽最大努力给大家讲解一下ksh,望对你能起到一定的作用,文末附上E文地址。

1. 准备工作首先请确保ksh程序已经安装在/bin/目录下,强子前几天装Fedora7却没有发现ksh被安装,如果没有则

直接上ksh官方网站上去下一个,然后重命名成ksh并拷贝到/bin目录下。

跟大多数脚本解释程序一样,可以选择交互式或者批处理运行,如果是交互式则直接在bash提示符下输

入#ksh,然后便进入ksh交互模式,如果是批处理,则:

先得建立一个ksh脚本文件:#vi myscript.ksh

然后在文件里添加脚本代码,Esc+:+wq保存,然后给予可执行权限: #chmod 777 myscript.ksh

最后直接运行便可:#./myscript.ksh 或者 #ksh ./myscript.ksh,如果需要参数,则直接在运行命令

后面输入:#ksh ./myscript.ksh arg1 arg2 arg3 ...

当然这些参数可以直接在程序体里面使用$1, $2, $3来调用,特别地:$0始终表示脚本文件名,因为它

其实才是真正的第一个参数(ksh命令后的第一个参数始终是脚本文件名)

注:为了确保批处理文件100%是被ksh解释的,最好在每个批处理的第一行加上

#!/bin/ksh (该行表示用ksh来解释下面的程序体,它是备注的一种特殊方式#!)

2. 变量

如何定义变量:myval = "hello world"

调用:echo $myval 则输出: hello world

如果是要执行数字运算,则我们必须显式声明变量类型,如:

integer val1=1

integer val2=2

integer val3=$val1+$val2

print $val3

该段程序如果不显式指明类型,则输出会是1+2而不是3

备注:通用的备注方法:# my comment

换行:\n

注意:ksh区分大小定,所有Linux的程序好像都区分大小写,这点强子并未确认

3. 流程控制if...else...fi语句

if ((ANIMAL=="cat")) then

print "Good"

else

print "Bad"

fi

判断条件:

== Equal

> Greater than

>= Greater than or equal to

<= Less than or equal to

!= Not equal to

case...in...esac语句(条件判断中可使用通配符)

echo input yes or no

read answer

case $answer in

yes|Yes|y)

echo got a positive answer;;

no)

echo got a 'no';;

q*|Q*)

exit;;

*)

;;

esac

while...do...done语句

keeplooping=1;

while [[ $keeplooping -eq 1 ]] ; do

read quitnow

if [[ "$quitnow" = "yes" ]] ; then

keeplooping=0

fi

if [[ "$quitnow" = "q" ]] ; then

break;

fi

done

util...do...done...语句

until [[ $stopnow -eq 1 ]] ; do

echo just run this once

stopnow=1;

echo we should not be here again.

done

for...do...done语句

list="one two three"

for var in $list ; do

echo $var

list="nolist"

done

或者

for ((i=0; i<5; i++))

do

echo `date`

sleep 1.5

done

4. 数组

定义数组:

array[1]="one"

array[2]="two"

array[3]="three"

three=3

调用数组:

print ${array[1]}

print ${array[2]}

print ${array[3]}

print ${array[three]}

5. 一些内置的常量

PWD - 当前目录

RANDOM - 产生一个随机数

$$ - 输出当前进程号

PPID - 你进程ID $1 to $9 - 参数

$? - 退出代码

$REPLY - 数字菜单的选择项

$# - 命令参数的数量

$* - 按空格分隔的参数的值,如果是"$*"则有所不同

$@ - 按空格分隔的参数的值,如果是"$@"则有所不同

至于ksh的$*, $@, "$*"和"$@"的区别,可参考以下代码:

set 'apple pie' pears peaches

for i in $* ; do

echo $i

done

# apple

# pie

# pears

# peaches

set 'apple pie' pears peaches

for i in "$*" ; do

echo $i

done

# apple pie pears peaches

set 'apple pie' pears peaches

for i in $@ ; do

echo $i

done# apple

# pie

# pears

# peaches

set 'apple pie' pears peaches

for i in "$@" ; do

echo $i

done# apple pie

# pears

# peaches

6. 函数

printmessage() {

echo "Hello, this is the printmessage function"

}

printmessage

内置的函数:

read varname -- 从终端读取标准输入并赋值给varname

set $varname -- 为参数设定值,如果调用set $val="first second third",则$1="first"

eval -- 直接执行命令如:eval 'print hello'则直接执行命令print hello

文本位置,颜色调整 -- 用法:

tput init

tput clear

tput cup 3 2

print -n "Here is a clean screen, with these words near the top"

endline=`tput cols`

tput cup $(($endline - 2))

print "and now, back to you"

sleep 2

构建自己的数字菜单选择项:

select word in one two three exit; do

echo word is $word

echo reply is $REPLY

if [[ "$word" = "exit" ]] ; then

break;

fi

done

运行这段脚本,将输出并等待用户作出选择

1) one

2) two

3) three

4) exit

#?

7. 在Ksh里面调用其它Linux系统工具

如cut, join, comm, fmt, grep, egrep, sed, awk

强子现在正在研究awk,一个文本分析处理工具,很强大,稍后附上研究心得

8. exit和return的区别exit会退出整个程序体,而return则只是退出当前函数体而非程序体,并有返回值

关于ksh的详细用法可参考在线手册:

http://www.cs.princeton.edu/~jlk/kornshell/doc/man93.html

linux ksh教程下载,学习Linux中ksh的用法相关推荐

  1. 学linux有什么用主要学什么软件,Linux为何受欢迎?学习Linux有什么用?

    Linux在很多人的认知中只是操作系统,其实Linux也是非常热门的技术,但对于很多初学者而言,对Linux了解并不是很清楚,你知道Linux为何受欢迎?学习Linux有什么用吗?下面跟大家分享一下. ...

  2. Linux培训教程 Git在linux下的使用

       *初始化git仓库,使用gitinit命令 *添加文件到git仓库分两步: 1.使用git add filename ;可分多次使用,添加多个文件到暂存区 2.使用git commit -m & ...

  3. Linux中ksh的功能描述,学习Linux中ksh的用法

    熟悉Linux的朋友肯定都知道bash,它是Linux默认的命令行解释程序,熟悉Solaris的也应该知道csh, 但是csh用起来比较费劲,于是乎产生了Korn Shell (http://www. ...

  4. linux 免费教程下载,Linux系统入门教程

    Linux系统入门教程 (10页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 15.9 积分 Linux系统入门教程(文档资料整理) (2011-08-0 ...

  5. 《Linux入门教程》学习总结

    http://write.blog.csdn.net/postedit/42078769 学习网址:http://www.92csz.com/study/linux/ 常用shell命令备忘 1:ld ...

  6. linux基础教程入门学习是系统汇总全集(附详细的图文目录学习)

    好的开始是成功的一半.学习 Linux 的第一个问题是搞明白 Linux 是什么,了解其来龙去脉.前世今生,知道其发展趋势.应用前景,弄清楚为什么学习它,以及如何掌握它和使用它,知其然更要知其所以然. ...

  7. linux的tomcat下载,tomcat linux 64位下载

    tomcat 8发布了,这里为大家带来了 linux版本下载,此版本为8.0.32 tomcat linux 64位下载,它是由Apache 所开发的一个核心项目,由于Tomcat 产品的技术先进.性 ...

  8. 【LINUX计算机大白平凡学习linux之路】

    @计算机大白平凡学习 之路 千里之行,始于足上.只有基础扎实+思路清析,写脚本才没有问题.多看一些牛人大咖写的脚本.看人家的思路与结构,会收益良多, 一起努力学习吧! Linux是Torvalds先生 ...

  9. linux车机按键学习,linux就该这么学

    前言 学习是一件苦差 我无意回避这个问题--学习本是件痛苦的事情,如果学习Linux真的很简单,那么必是骗子说的谎话,起码这不能给你带来高薪,打开电脑后沉思,是该聊会天那~还是追个美剧那~还是打盘LO ...

最新文章

  1. python sklearn.preprocessing.standardScaler 的transform和fit_transform方法
  2. linux系统下开机启动流程
  3. 集群批量管理工具parallel ssh的安装及使用
  4. P6800-[模板]Chirp Z-Transform【NTT】
  5. JS Ajax异步请求发送列表数据后面多了[]
  6. Node编写API接口,ajax实现增删改查
  7. stl之set集合容器应用基础
  8. Ubunt sudo免密码输入
  9. Ruby module ---模块,组件
  10. Android GIS开发系列-- 入门季(15) 网络图层加载
  11. 深入理解和使用nginx
  12. Native Boot 从一个 VHD 引导系统的相关说明
  13. UML---构件图和部署图
  14. 破解中兴ZXV10 H108L电信猫超级密码,附赠破解路由限制
  15. linux-LNMP一键安装Error: MySQL install failed. Error: PHP install failed
  16. 智慧城市:Web GIS 地图应用 IOC 运营中心
  17. STM32F107各种接口程序合集工程文件
  18. php 预缓存,Steam更新着色器预缓存新功能,OpenGl、Vulkan硬件收效良多
  19. 基于MATLAB的运动目标检测解析
  20. 读《因果的真相》第五章摘抄笔记

热门文章

  1. navicat连接mysql报错ssh_Navicat 连接SSH方式连接mysql报错 ssh:expected key exchange group packet...
  2. python 百度网盘下载提速_教你如何百度网盘的提高下载速度?
  3. 从spring容器中获取对象工具类
  4. centos安装python3.8与pip
  5. 使用sshpass借助scp自动输入密码传输一个文件夹下的全部内容
  6. 服务器并发性能报告,一般的服务器瞬时并发应该怎么样才算是合格呢?
  7. 台式计算机的拆解与安装实验报告,计算机组成实验的实验报告
  8. 返回一个二维整数数组中最大子数组的和(二人结对)
  9. 对软件工程实践课程的预定目标
  10. php 几个比较实用的函数