#! /bin/bash
#! /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@-d |
@H_403_107@常用!侦测『目录』是否存在 |
||
@H_403_107@-b |
|||
@H_403_107@-c |
|||
@H_403_107@-L |
|||
@H_403_107@-e |
@H_403_107@侦测『某个东西』是否存在! |
||
@H_403_107@2. |
@H_403_107@关于程序的逻辑卷标! |
||
@H_403_107@-G |
|||
@H_403_107@-O |
@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@-r |
|||
@H_403_107@-w |
|||
@H_403_107@-x |
|||
@H_403_107@-s |
@H_403_107@侦测是否为『非空白档案』 |
||
@H_403_107@-u |
|||
@H_403_107@-g |
@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@|| |
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@-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@-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、命令行参数
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 内的语法,若有错误则予以列出!