Linux shell脚本

1.sh:变量

#!/bin/bash
#shell中的变量、赋值运算符=、几种引号(单引号、双引号、反引号)

#shell中的变量没有类型之分,直接赋值即可。shell的局部变量只能在本shell中使用,相当于C函数中的变量仅能在本函数内使用。shell中的环境变量可被本shell创建的所有子shell使用,就像C中的全局变量可被同一源文件中的所有函数使用一样。

#局部变量
a=china                  #赋值运算符左右不能有空格,因为空格是shell中的命令分隔符。即若变量a后面有空格,a会被当做一条命令。
b="linux"
c='shenzhen,$a'    #单引号中不能引用变量,单引号中转义字符无效。
d="shanghai,$a"   #双引号中可以引用变量的值,双引号转义字符有效。
e="I love you!"        #当字符串中有空格,则需用双引号括起来。
age=25

echo $a                  # $符号用于引用变量
echo $b
echo $c
echo $d
echo $e
echo $age

#环境变量,变量名前加export关键字,名字一般用大写字母。
export MYHOME=/home/test
echo $MYHOME                                                   #注意,shell中的环境变量是局部的,即只在执行该脚本的shell及其子shell内有效。此处定义并未修改到系统环境变量。
export PATH=$PATH:/home/test/script            #假设所有脚本同在目录/home/test/script下,这里将它添加至PATH环境变量中,所以下面可用2.sh脚本名来执行脚本2.sh。且环境变量在子进程中仍然有效,即可在2.sh中通过脚本名执行3.sh,可在3.sh内通过脚本名执行4.sh。直至1.sh脚本执行完毕,脚本内定义的环境变量便会消失。
2.sh

 

#参数变量0-9

echo $0    #命令行上的程序名
echo $1    #第一个参数
echo $2    #第二个参数,以此类推。

#其它内置变量:$*、$@、$?、$#
#  $*   表示所有参数被双引号引住,等同"$1$2$3"。
#  $@ 表示所有参数分别被双引号引住,等同于"$1" "$2" "$3"。
#  $?   存储命令或程序的返回结果
#  $#   该变量存储命令行上的参数个数

#反引号
echo hello world > /dev/pts/0
echo `tty`        #反引号用于引用命令的执行结果
ls -l `tty`          # tty命令功能为查看当前终端号,即本终端对应 /dev/pts/ 目录下的哪个数字。tty执行后,然后执行ls -l查看该设备文件的属性。

# $() ,和反引号作用相同
ls -l $(tty)      

2.sh:算术运算符

#!/bin/bash
#shell中的算术运算符:
# +、-、*、/、%、**、+=、-=、*=、/=、%=
#**:幂运算,如2**3为求2的3次幂。


#shell中令表达式做数学运算,有4种方式:expr、let、$[]、$(())
#1、expr指令
echo 1+2         #直接输出字符串1+2
echo `expr 1 + 2`  #输出1+2的和,expr命令的语法规定:操作数与运算符间须以空格分隔

#2、let指令
let sum=4+6      #let命令使4+6的和赋给sum,而不是将字符串4+6赋给sum。+号左右不能有空格。
echo $sum

#3、$[ ]
echo $[7+4]      #$[ ]表示中括号中的表达式作数学运算

 #4、$(())  
echo $((5+5)) 

 

3.sh:输入输出

#!/bin/bash
#input/output

#echo命令用于输出
string="I love you!"
echo $string > file1

str=what?
echo $str >> file1

str="What are you doing?"
echo -e "\n\t$str"      #echo -e选项启动识别转义字符,且含转义字符的字符串要用双引号括起来,\n为换行符,\t等同tab键。
echo \$$$$$            #\为转义符,直接输出其后$符号。

#read命令用于读取输入,可从键盘输入读,也可从文件中读
read str      #读取键盘输入值到str变量中
echo $str

read str1 str2 str3 #从键盘读取多个输入,输入以空格分割分别赋给三个变量。
echo $str1 $str2 $str3

read str1 str2     #如果输入为a b c d,则a赋给str1,b、c、d都赋给str2
echo $str1 $str2

read str4 str5 str6 < file1 #从文件file1中读取
echo $str4 $str5            #str4为 I,str5为 love,str6为 you!

 

4.sh:测试命令

#!/bin/bash
#test命令用于测定变量和字符串的大小、文件属性
#test命令返回0表示真,返回1表示假

#测试文件属性
#格式:test 文件属性测试符 文件路径
#文件属性测试符:
# -d:测试文件是否为目录,-s:测试文件是否非空,-f:测试文件是否为正规文件
# -w:测试文件是否可写,-L:测试文件是否是符号链接,-u:测试文件是否有设置suid位
# -x:测试文件是否可执行,-r:测试文件是否可读

test -x ./file1  #测试当前目录下的file1是否可执行
echo $?        #$?是一个特殊变量,用于保存上个命令的返回值

test -x ./file1
echo $?

#数值测试:test命令、中括号[]
#test命令格式:test 操作数1 数值比较符 操作数2
#中括号[]格式: [ 操作数1 数值比较符 操作数2 ]      #靠近中括号都必须留空格
#数值比较符:
# -eq:相等, -ne:不相等,
# -le: 小于等于,-ge:大于等于
# -gt:大于, -lt:小于等于
test 3 -eq 5
echo $?
[ 10 -lt 12 ]
echo $?

#字符串测试
#格式1:[test] 字符串比较符 字符串
#格式2:[test] 字符串1 字符串比较符 字符串2
#[]表示为可省略项
#字符串测试符:
#  =:测试两个字符串是否相等,也可使用==
# !=:测试两个字符串是否不相等
# -z:测试字符串是否空字符串
# -n:测试字符串是否非空字符串
str1=aaa
str2=bbb
test str1 == str2    # 也可写为test str1 = str2,但为与大多数高级语言的语法习惯保持一致,推荐使用==
echo $?

#逻辑测试
# -a:逻辑与,-o:逻辑或,!:逻辑非

[ -w file1 -a -x file1 ]   # test -w file1 -a -x file1  #测试文件file1是否可写且可执行
echo $?

 

5.sh:流程控制—if

#!/bin/bash
#shell流程控制:if、for、until

#if
#一个分支
if [ $1 -eq 0 ]
 then echo I love you!
fi

#两个分支
if [ $2 -lt 0 ]
 then echo I hate you!
else
 echo I love you very much!
fi

#三个分支
if [ $3 -gt 0 ]; then
    echo good!
elif [ $3 -eq 0 ]; then
    echo common!
else
    echo bad!
fi

 

6.sh:流程控制—for

#!/bin/bash
#for

#example1,ch依次取关键字in后的值
for ch in a b c d e 1 2 3 567
do
    echo $ch
done

#example2, 省略关键字in,ch的值为命令行上的参数
for ch
do
    echo $ch
done

 

7.sh:流程控制—until

#/bin/bash
#until format:
#until 条件       #直至条件满足才退出循环
#do
# 命令1
# ……
#done


#until示例,计算从1累加至100
i=1
sum=0

until [ sum -gt 100 ]
do
    sum=$[$sum+$i]
done
echo sum = $sum

 

HTTP://WLSAM168.400GB.COM

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值