这里只是一些简单的shell脚本的基础例子,适合入门的朋友练练手
-
#! /bin/sh
-
#测试echo、位置变量
-
ls
-
echo hello
-
echo "\$* is $*"
-
echo "\$@ is $@"
-
echo "\$# is $#"
-
date
-
################################
-
#! /bin/bash
-
#测试三种引号
-
log=Sunday
-
#双引号阻止shell对大多数特殊字符进行解释
-
echo "Today is $log"
-
#单引号阻止shell对所有字符进行解释
-
echo 'Today is $log'
-
#倒引号修饰的命令将会被执行,输出结果作为这个表达式的值
-
echo "Today is `date`"
-
#################################
-
#! /bin/bash
-
#shell脚本是一种“弱类型”的语言,它并不知道num中保存的是
-
#一个数字。可以用$[]来高速shell应该对其中的表达式求值
-
num1=1+2
-
num2=$[1+2]
-
echo $num1 $num2
-
#################################
-
#! /bin/bash
-
#shell脚本是一种“弱类型”的语言,它并不知道num中保存的是
-
#一个数字。可以用$[]来告诉shell应该对其中的表达式求值
-
num1=1+2
-
num2=$[1+2]
-
echo $num1 $num2
-
#也可以用let表达式,用于计算整数表达式的值
-
let num=$num1+1
-
echo $num
-
#expr的命令允许的表达式更复杂,注意数字和+之间有空格
-
expr 2 + 2
-
######################################
-
#! /bin/bash
-
#if语句,格式很重要,if后有空格,[]前后有空格,“=”前后有空格,
-
#“;”代表一行结束,所以可以在后面写then,否则换行
-
echo "Enter passwd"
-
read passwd
-
if [ "$passwd" = "mypasswd" ];then
-
echo "passwd is correct!"
-
elif test "$passwd" = "miss";then
-
echo "passwd is missing"
-
else
-
echo "passwd is wrong"
-
fi
-
####################################
-
#! /bin/bash
-
#条件测试,测试某个程序的返回值
-
#需要另建一个testscript文件如下
-
# code #! /bin/sh
-
# exit $@
-
-
if ./testscript -1;then
-
echo "testscript exit #1"
-
fi
-
if ./testscript 0;then
-
echo "testscript exit 0"
-
fi
-
if ./testscript 1;then
-
echo "testscript exit 1"
-
fi
-
-
###################################
-
#!/bin/sh
-
#test和[]可以互换
-
-
#判断登陆shell是不是sh
-
if test "$SHELL" = "bin/bash";then
-
echo "shell is /bin/bash"
-
fi
-
#判断是不是一个文件
-
if [ -f $0 ];then
-
echo "$0 is a file"
-
fi
-
#判断是否可执行
-
if [ -x "$0" ];then
-
echo "$0 can be x"
-
fi
-
#判断是否有值
-
if [ -n $0 ];then
-
echo "$0 has value"
-
fi
-
################################
-
#!/bin/sh
-
#用于数字的比较
-
##eq 如果相等返回真
-
##ne 如果不等返回真
-
##lt 如果前者小于后者返回真
-
##le 如果前者小于或等于后者返回真
-
##gt 如果前者大于后者返回真
-
##ge 如果前者大于或等于后者返回真
-
num=5
-
if [ $num -eq 5 ];then
-
echo "num=5"
-
fi
-
####################################
-
#!/bin/sh
-
#复合表达式
-
#!非
-
#-a与
-
#-o或
-
#也可以用&&和||,这样看起来更清晰,但效率较低
-
num1=5
-
num2=3
-
if [ $num1 -eq 5 -a $num2 -eq 4 ];then
-
echo "sucess"
-
fi
-
if [ $num1 -eq 5 ] && [ $num2 -eq 3 ];then
-
echo "sucess2"
-
fi
-
#####################################
-
#! /bin/bash
-
#和C不同,case必须有“;;”用于break,"*"代表匹配所有字符串
-
case "$1" in
-
start)
-
echo start;;
-
stop)
-
echo stop;;
-
*)
-
echo hello;;
-
esac
-
####################################
-
#!/bin/sh
-
#计算1到输入的count的累加
-
while read number
-
do
-
sum=0
-
count=1
-
if [ $number -gt 0 ];then
-
while [ $count -le $number ]
-
do
-
sum=$[$sum+$count]
-
count=$[$count+1]
-
done
-
echo $sum
-
fi
-
done
-
#################################
-
#!/bin/sh
-
#计算1到输入的100的累加
-
#until 和while的判断条件相反
-
sum=0
-
count=1
-
#until ! [ $count -le $number ]
-
until [ $count -gt 100 ]
-
do
-
sum=$[$sum+$count]
-
count=$[$count+1]
-
done
-
echo $sum
-
######################################
-
#! /bin/bash
-
#测试for
-
echo "$# file(s) to list"
-
-
for file in $@
-
do
-
ls -l $file
-
done
-
#输出列表里的文件名
-
for file in `ls`
-
do
-
echo $file
-
done
-
################################
-
#!/bin/sh
-
#输出列表的数,seq工具可产生列表,要用倒引号扩起来
-
#for i in 1 2 3 4 5
-
for i in `seq 5`
-
do
-
echo $i
-
done
-
##################################
-
#! /bin/bash
-
#read 语句 如果不提供变量名,那么读取的信息将存放在REPLY变量中
-
read firt second
-
echo $firt
-
echo $second
-
#read 常用来在输出一段内容后暂停,等待用户继续
-
echo "press
<ENTER> to continue"
-
read
-
echo "END"
-
####################################
-
#! /bin/bash
-
#exit用于强行退出一个脚本,并向调用这个脚本的进程返回一个整数
-
#trap用于捕捉信号量,并忽视这个信号量
-
trap 'echo "input quit to exit"' INT
-
#提示用户输入quit退出程序
-
while [ "$input" != 'quit' ]
-
do
-
read input
-
done
-
exit 0
-
##########################################
-
#! /bin/bash
-
#在trap中使用了复合命令echo "Goodbye";exit
-
#即先执行echo Goodbye显示提示信息,再exit退出脚本
-
trap 'echo "Goodbye";exit' EXIT
-
echo "input quit to exit"
-
#提示用户输入quit退出程序
-
while [ "$input" != 'quit' ]
-
do
-
read input
-
done
-
exit 0
-
#########################################
-
#! /bin/bash
-
#自己编写命令delete,用这个删除文件时,可以删除到回收站。
-
#将编写的命令移动到/bin里面,就可以当做普通命令使用了
-
if [ ! -d ~/.trash ];then
-
mkdir ~/.trash
-
fi
-
if [ $# = 0 ];then
-
echo "Usage: delete file1[file2,file3...]"
-
else
-
echo "You are about to delete these files"
-
echo "$@"
-
echo -n "Are you sure to do that?[Y/n]"
-
read reply
-
if [ "$reply" = "Y" ] || [ "$reply" = "y" ];then
-
for file in $@
-
do
-
if [ -f $file ]||[ -d $file ];then
-
mv -b $file ~/.trash
-
else
-
echo "$file:No such file or directory"
-
fi
-
done
-
fi
-
fi
-
########################
- 1