shell学习笔记(一):for循环、if语句、通配符、命令代换、引号

一、for循环

 
  

for 变量in列表

do

command1

command2

......

done

例1:vim test.sh

 
  

#! /bin/bash

for str in name.list

do

echo $str

done

例2:vim tesh.sh

 
  

#! /bin/bash 

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

do

echo $i

done

例3:vim test.sh

 
  

#! /bin/bash

array=(a b c d 1 2 3)

for i in ${array[*]}

do 

echo $i 

done

二、if语句

1、shell的if判断是0 为真,走then语句,与c语言(非零为真)相反。

 
  

if [条件表达式]

then

command1

else

command2

......

fi

2、条件表达式:

(1)文件表达式

if [-f file] 如果文件存在

if [-d dir] 如果文件夹存在

if [-s file] 如果文件存在且非空

if [-r file] 如果文件存在且可读

if [-w file] 如果文件存在且可写

if [-x file] 如果文件存在且可执行

(2)整数变量表达式

if [ int1 -eq int2 ]     如果int1等于int2   
if [ int1 -ne int2 ]     如果不等于    
if [ int1 -ge int2 ]     如果>=
if [ int1 -gt int2 ]      如果>
if [ int1 -le int2 ]      如果<=
if [ int1 -lt int2 ]       如果<

(3)字符串变量表达式( 字符串允许使用赋值号做等号)

If  [ $string1 = $string2]       如果string1等于string2
if  [ $string1 !=  $string2 ]    如果string1不等于string2       
if  [ -n $string  ]                      如果string 非空(非0)  
if  [ -z $string  ]                       如果string 为空
if  [ $sting ]                             如果string 非空(和-n类似)   

例1:vim test_if.sh

#! /bin/sh
rsync -avzP --delete /var/tmp/Control /backup/Control_bak/
if [ $? -eq 0 ]
then
echo 'rsync successful !!!'
else
echo 'faild'
fi
三、通配符、命令代换、单双引号

1、通配符

(1)* :匹配多个任意字符

(2)? :匹配一个任意字符

(3)[若干字符] :匹配方括号中任意一个字符的一次出现

2、命令代换:反引号``或者$()

例1:vim test_th.sh

#! /bin/bash
DATE=`date`
LL=$(ls -al)
echo $DATE
echo $LL

3、单引号''(保持字面值)和双引号""(可处理字符串中的特殊字符)

例1:vim test.sh

#! /bin/bash

echo '`date`' echo "`date`" echo '\\' echo "\\"


[test@localhost test-find]$ ./test.sh 
`date`
2017年 04月 17日 星期一 17:26:05 CST
\\
\

4、字符串与数值之间的转换与计算

例1:vim test.sh

#! /bin/bash

svnci=`svn log -r {$TodayDirName}:{$Weeksago} |grep line |wc -l` svncou=$(($svnci-1))

双括号取值




你可能感兴趣的:(shell)