笔记:bash脚本入门

前端之家收集整理的这篇文章主要介绍了笔记:bash脚本入门前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

编写bash脚本,首先在文件的第一行加入如下代码

#! /bin/bash

比如文件test1.sh的完整代码

#! /bin/bash echo "Just a test!"

执行如下指令:

chmod +x test1.sh && ./test1.sh

即可看到效果

一、变量相关

1、输入变量

read var

2输出变量

echo $var

demo代码如下:

#! /bin/bash read var echo $var

二、判断相关

1、逻辑判断

逻辑卷标

@H_403_107@表示意思

@H_403_107@1.

@H_403_107@关于档案与目录的侦测逻辑卷标!

@H_403_107@-f

@H_403_107@常用!侦测『档案』是否存在 @H_403_107@eg: if [ -f filename ]

@H_403_107@-d

@H_403_107@常用!侦测『目录』是否存在

@H_403_107@-b

@H_403_107@侦测是否为一个『 @H_403_107@block @H_403_107@档案』

@H_403_107@-c

@H_403_107@character @H_403_107@-S

@H_403_107@socket @H_403_107@标签档案』

@H_403_107@-L

@H_403_107@symbolic link @H_403_107@的档案』

@H_403_107@-e

@H_403_107@侦测『某个东西』是否存在!

@H_403_107@2.

@H_403_107@关于程序的逻辑卷标!

@H_403_107@-G

@H_403_107@侦测是否由 @H_403_107@GID @H_403_107@所执行的程序所拥有

@H_403_107@-O

@H_403_107@UID @H_403_107@-p

@H_403_107@侦测是否为程序间传送信息的 @H_403_107@name pipe @H_403_107@或是 @H_403_107@FIFO @H_403_107@(老实说,这个不太懂!)

@H_403_107@3.

@H_403_107@关于档案的属性侦测!

@H_403_107@-r

@H_403_107@侦测是否为可读的属性

@H_403_107@-w

@H_403_107@侦测是否为可以写入的属性

@H_403_107@-x

@H_403_107@侦测是否为可执行的属性

@H_403_107@-s

@H_403_107@侦测是否为『非空白档案』

@H_403_107@-u

@H_403_107@侦测是否具有『 @H_403_107@SUID @H_403_107@』的属性

@H_403_107@-g

@H_403_107@SGID @H_403_107@-k

@H_403_107@sticky bit @H_403_107@4.

@H_403_107@两个档案之间的判断与比较@H_403_107@;例如@H_403_107@[ test file1 -nt file2 ]

@H_403_107@-nt

@H_403_107@第一个档案比第二个档案新

@H_403_107@-ot

@H_403_107@第一个档案比第二个档案旧

@H_403_107@-ef

@H_403_107@第一个档案与第二个档案为同一个档案( @H_403_107@link @H_403_107@之类的档案)

@H_403_107@5.

@H_403_107@逻辑的『和@H_403_107@(and)@H_403_107@』『或@H_403_107@(or)@H_403_107@

@H_403_107@&&

@H_403_107@逻辑的 @H_403_107@AND @H_403_107@的意思

@H_403_107@||

@H_403_107@OR @H_403_107@的意思

2、运算符号

@H_403_107@运算符号

@H_403_107@代表意义

@H_403_107@=

@H_403_107@等于 应用于:整型或字符串比较@H_403_107@如果在@H_403_107@[] @H_403_107@中,只能是字符串

@H_403_107@!=

@H_403_107@不等于 应用于:整型或字符串比较@H_403_107@<

@H_403_107@小于 应用于:整型比较@H_403_107@@H_403_107@中,不能使用 表示字符串

@H_403_107@>

@H_403_107@大于 应用于:整型比较@H_403_107@中,不能使用表示字符串

@H_403_107@-eq

@H_403_107@等于 应用于:整型比较

@H_403_107@-ne

@H_403_107@不等于 应用于:整型比较

@H_403_107@-lt

@H_403_107@小于 应用于:整型比较

@H_403_107@-gt

@H_403_107@大于 应用于:整型比较

@H_403_107@-le

@H_403_107@小于或等于 应用于:整型比较

@H_403_107@-ge

@H_403_107@大于或等于 应用于:整型比较

@H_403_107@-a

@H_403_107@双方都成立(@H_403_107@and@H_403_107@) 逻辑表达式 –@H_403_107@a @H_403_107@逻辑表达式

@H_403_107@-o

@H_403_107@单方成立(@H_403_107@or@H_403_107@o @H_403_107@-z

@H_403_107@空字符串

@H_403_107@-n

@H_403_107@非空字符串



3、逻辑表达式

test 命令:

# test -d /etc/ && echo 'ok'

ok

[] 表达式:

# [ 1 -eq 1 ] && echo 'ok'

ok

[[]] 表达式:

# [[ 2 < 3 && 4 > 5 ]] && echo 'ok'

ok

4条件判断

if then fi 的方式

结构如下:

if [ expression ]

then

  statments

fi

或者

if [ expression ]

then

  statments

else

  statments

fi

或者

if [ expression ]

then

  statments

else if [ expression ]

  then

    statments

  else

    statments

fi

或者

if [ expression ]

then

  statments

elif [ expression ]

  then

    statments

  else

    statments

fi

示例代码如下:

#! /bin/bash echo "Press y to continue" read yn if [ "$yn" = "y" ] ; then 
    echo "Script is running ..." 
else 
    echo "Break!" 
fi

case ...esac方式

结构如下:

case "$var" in

 condition1 )

  statments1;;

 condition2 )

  statments2;;

 ...

 * )

  default statments;;

esac

示例代码如下:

#! /bin/bash echo "This program will print your selection!" 

case $1 in A) echo "your choice is A" ;; # the break B) echo "your choice is B" ;; C) echo "your choice is C" ;; *) # the default way echo "usage {A|B|C}" exit 1 
esac

三、循环相关

for循环

结构如下:

for $var in [list]

do

  statments

done

示例代码如下:

#! /bin/bash declare -i s for (( i=1; i<=100; i=i+1 )) do s=s+i done 
echo "The count is ==> $s"

while循环

结构如下:

while [ condition ]

do

  statments

done

until循环

结构如下:

until [ condition is TRUE ]

do

  statments

done

四、其它

1、命令行参数

类似c语言中main函数argv参数,通常的调用如下:

myscript param1 param2

demo代码如下:

#! /bin/bash echo $# echo $@ echo '$0 = '$0 
echo '$1 = '$1 
echo '$2 = '$2

解释如下:

$# 是传给脚本的参数个数

$@ 是传给脚本的所有参数的列表

$0 是脚本本身的名字

$1是传递给该shell脚本的第一个参数

$2是传递给该shell脚本的第二个参数

2、调试

# sh [-nvx] scripts

-n :不要执行 scripts,查询 scripts 内的语法,若有错误则予以列出!

-v :在执行 scripts 之前,先将 scripts 内容显示在屏幕上;

-x :将有使用到的 scripts 内容显示在屏幕上,-v 稍微不同!

猜你在找的Bash相关文章