Shell程序的一个常见用法是汇集常用的命令串。
一、执行脚本
建立文件后,下一步就要使它“可执行”,即要为文件设置读和执行的访问权限,这样Shell就可以运行它。
将proof文件设置为所有用户都具有可读和可执行的权限,可以使用chmod命令:$ chmod +rx proof
输入可执行文件的文件名即可执行命令。若脚本在当前目录下,可输入:$ ./proof
若脚本是在PATH指定的某个目录中,可以输入:$proof
二、执行脚本的一些方法
#!/bin/sh 使用/bin/sh运行该脚本;
#!/bin/bash 使脚本在bash下运行
#!/usr/bin/perl Perl脚本
#!/usr/bin/python Python脚本
三、显示调用Shell
$ sh scriptname 显示启动子Shell来运行脚本
四、在当前Shell中运行脚本
若.profile是可执行的,可以输入:$ ~/.profile
若不是可执行,可输入:$ ksh ~/.profile
改变当前的运行环境,可输入:$.~/.profile “.”命令是一个Shell命令,它取文件名作为其参数并使当前的Shell读取和执行文件中的命令。
五、变量处理
MESSAGE="Hello,world"
echo $MESSAGE echo命令将其参数打印到标准输出。
使用Shell环境变量
$ cat dev-config
DEVPATH=/usr/project2.0/bin:/usr/project2.0/tools/bin:$HOME/dev/project2.0
export DEVPATH
cd $HOME/dev/project2.0
该脚本中使用了Shell环境变量的值$HOME,还设置一个新变量DEVPATH
六、变量扩展
变量名组合
将变量OLDFILExxx的值赋值给NEWFILE:NEWFILE=$OLDFILExxx
变量OLDFILExxx不存在,这时NEWFILE将为空,改为:NEWFILE=${OLDFILE}xxx
提供默认值
${VARIABLE:-default} 若已经定义了VARIABLE,将使用其值;如果未定义就使用default字符串。
${VARIABLE:?message} 若VARIABLE未设置,就打印message并退出。
七、Shell程序的特殊变量
$NAME 变量的值 $$当前的进程号
!存放当前最后一个启动的后台进程的进程ID
PWD存放当前的工作目录名
OLDPWD存放先前的工作目录名
LINENO存放脚本中的当前行号
RANDOM存放一个随机整数,它取自介于0到32767之间的均匀发布的随机数。
八、数组和列表
FILE[0]=new FILE[1]=temp FILE[2]=$BACKUP
echo ${FILE[2]} 打印一个元素
NUMBERS={1 2 3 4 5}
echo ${NUMBERS[*]}
九、字符串处理
$ FILENAME="firefly.sh"
$ echo ${#FILENAME}
10
简摘自:《UNIX完全手册(第二版)》 Kenneth Rosen , James Farber,Douglas Host,Rachel Klee,Richard Rosinski著 刑国庆,黄辰,刘琦 译