Linux Shell脚本学习

Shell编程, 简单的讲,就是命令解析器,将用户输入的指令转换为相应的机器能够运行的程序。
 >Bourne shell(sh)
 >Korn shell(ksh)
 >Bourne Again shell(bash)
 >C shell(包括csh和 tcsh)
 >TENE/TOPS C shell(tcsh)
Shell脚本是一个包含一系列命令的文件。
    vi hello.sh
#!/bin/sh
#echo something
echo "Hello World"
echo "hello!"
echo "lavy"
mkdir /tnt

运行: sh hello.sh
注:需要改变脚本文件的权限为可执行
Shell脚本的第一行必须是如下格式:
#!/bin/sh
注释使用#,如#echo something
#!/bin/sh
在shell编程中,所有的变量都由字符串组成,并且不许要预先对变量进行声明
例一(赋值):
#!/bin/sh
#set variable a
a="hello world"
# print a
echo "A is:"
echo $a

输出:A is:
     hello world

例二(变量):
#!/bin/sh
num=2
echo "this is the $numnd"

输出: this is the
注:并不会打印"this is the 2nd",因为shell会去搜索变量numnd的值,但这个变量是没有值的,可以使用花括号打印num的值:
#!/bin/sh
num=2
echo "this is the ${num}nd"

输出: this is the 2nd

默认变量:
$#:传入脚本的命令行参数个数
$*:所有命令行参数值,在各个参数值之间留空格
$0:命令本身(shell文件名)
$1:第一个命令行参数
$2:第二个命令行参数

例三:
#!/bin/sh
echo "number of vars:"$#
echo "values of vars:"$*
echo "value of var1:"$1
echo "value of var2:"$2
echo "value of var3:"$3
echo "value of var4:"$4
echo "file name:"$0

输出:
number of vars:4
values of vars:1 2 3 4
value of var1:1
value of var2:2
value of var3:3
value of var4:4
file name:s3.sh

局部变量:
在变量首次被赋值时加上local关键字可声明一个局部变量:
例四:
#!/bin/sh
hello="var1"
echo $hello
function func1{
        local hello="var2"
        echo $hello
}
func1
echo $hello

输出:   var1
    var2
    var1
注意变量赋值时,"="左右两边都不能有空格
语句结尾不需要";"

if语句:
  比较整数a和b是否相等: if [ $a = $b ](也可用eq,=号两端都有空格
  整数大于:if [ $a -gt $b ]
  字符串相等if [ $a = $b ]
  字符串是否为空 if [-z $a ]
  整数变量a是否大于b:if [ $a -gt $b ]
注意:
    1、"["和"]"符号左右都留有空格
    2、“=”左右都有空格

判断:
 -e 文件已经存在
 -f 文件是普通文件
 -s 文件大小不为零
 -d 文件是一个目录
 -r 文件对当前用户可以读取
 -w 文件对当前用户可以写入
 -x 文件对当前用户可以执行

例五:
#!/bin/sh
folder=./soft
[ -r "$folder" ] && echo "can read $folder"
[ -f "$folder" ] || echo "this is no

输出:
can read ./soft
this is not file

for循环
例六:
#!/bin/sh
for day in Sun Mon Tue Web Thu Fri Sat
do
        echo $day
done

输出:
Sun
Mon
Tue
Web
Thu
Fri
Sat

例七:
#!/bin/sh
for day in "Sun Mon Tue Web Thu Fri Sat"
do
        echo $day
done

输出:Sun Mon Tue Web Thu Fri Sat
注:如果列表被包含在“”中,则被认为是一个元素

while循环:
while [ condition ]
do
    #code block
done

until 循环:
until [ condition ]
do
    #code block
done

while和until的区别在于while是为真时执行,until是为假时执行

case语句:
例八:
#!/bin/sh
echo "Hit a key,then hit return."
read Keypress
case "$Keypress" in
[A-Z]) echo "Uppercase letter";;
[a-z]) echo "Lowercase letter";;
[0-9]) echo "Digit";;
*) echo "Punctuation,whitespace,or other";;
esac

注:read为一个函数,用于等待读取输入的值

 

在这儿发点牢骚,为什么国内那些大企业对学历要求那么高,招聘要求上都写着研究生,本科(211),我这专科毕业的被他们逼得只能去外企混,杯具!睡觉!

你可能感兴趣的:(编程,linux,shell,脚本,sun,whitespace)