当前位置:文档之家› shell脚本学习

shell脚本学习

user 16:50:13
Linux bash shell脚本语法入门
去论坛讨论 来源: 作者: 发布时间:2010-04-10


1.基础

#!/bin/bash //bash脚本第一句都是这个,他会让系统指定以bash来解释这个脚本

# //shell脚本注释符号

2.变量和使用

HOME="/home" //注意赋值不要有空格

a=123

HOME_LIST=$(ls /home) //把命令的执行结果赋值给变量

ehco $HOME //$ 符号是获得变量HOME的值

a=a+1

系统变量:

$0 这个程序的执行名字

$n 这个程序的第n个参数值,n=1...9

$* 这个程序的所有参数

$# 这个程序的参数个数

$$ 这个程序的PID

$! 执行上一个背景指令的PID

$? 上一个指令的返回值

3.if语句

if [ "22" -lt "33" ] then //注意空格

echo "22 less than 33"

else

echo "no"

fi //if语句的结束

4.case语句

echo "enter a number"

read ans //读取一个变量read

case $ans in

1)

echo "you numer is $ans"

;; //注意符号是两个 ;

2)

echo "you number is 2"

;;

[3-9])

echo "you number is $ans"

;;

*) //*通配符

echo "others"

esac

5.比较运算符

运算符 描述 示例

文件比较运算符

-e filename 如果 filename 存在,则为真 [ -e /var/log/syslog ]

-d filename 如果 filename 为目录,则为真 [ -d /tmp/mydir ]

-f filename 如果 filename 为常规文件,则为真 [ -f /usr/bin/grep ]

-L filename 如果 filename 为符号链接,则为真 [ -L /usr/bin/grep ]

-r filename 如果 filename 可读,则为真 [ -r /var/log/syslog ]

-w filename 如果 filename 可写,则为真 [ -w /var/mytmp.txt ]

-x filename 如果 filename 可执行,则为真 [ -L /usr/bin/grep ]



filename1 -nt filename2 如果 filename1 比 filename2 新,则为真 [ /tmp/install/etc/services -nt /etc/services ]

filename1 -ot filename2 如果 filename1 比 filename2 旧,则为真 [ /boot/bzImage -ot arch/i386/boot/bzImage ]

字符串比较运算符 (请注意引号的使用,这是防止空格扰乱代码的好方法)

-z string 如果 string 长度为零,则为真 [ -z "$myvar" ]

-n string 如果 string 长度非零,则为真 [ -n "$myvar" ]

string1 = string2 如果 string

1 与 string2 相同,则为真 [ "$myvar" = "one two three" ]

string1 != string2 如果 string1 与 string2 不同,则为真 [ "$myvar" != "one two three" ]

算术比较运算符

num1 -eq num2 等于 [ 3 -eq $mynum ]

num1 -ne num2 不等于 [ 3 -ne $mynum ]

num1 -lt num2 小于 [ 3 -lt $mynum ]

num1 -le num2 小于或等于 [ 3 -le $mynum ]

num1 -gt num2 大于 [ 3 -gt $mynum ]

num1 -ge num2 大于或等于 [ 3 -ge $mynum ]

6.bash中几种循环

6.1. for name [ in word ] ; do list ; done

6.2. for (( expr1 ; expr2 ; expr3 )) ; do list ; done //注意有2层括号

6.3 while [expr] do list; done

其中list简单说就是一串由操作符(operator ;、&、&&、||)

分各给出一个简单例子:

1.

for filename in $(ls)

do

cat $filename

done

2.

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

do

echo $i

done

3.

x=1

sum=0

while [ $x -le 10 ] //注意[ ] 两边的空格

do

let sum=sum+$x //shell中算术计算使用let

let x=x+1

done

echo $sum

相关主题
文本预览
相关文档 最新文档