touch hello.sh
修改权限:
chmod 777 hello.sh
再之后编写shell脚本:
例:
1 #!/bin/sh //解释使用/bin/sh执行此文件
2 echo "hello" //直接显示hello的指令
3 echo `date` // 直接显示 date指令输出的结果, ` date`可以表示date指令输出的结果
4 number=50 //定义变量number并赋值50, 变量和=之间不能有空隔。
5 echo "number" //直接打印number
6 echo $number //直接打印number的值50
最后执行./hello.sh后的 结果为:
例2:
VAL=hello
echo $VAL
unset VAL
echo $VAL
最后打印
hello
并不会打印两个hello。因为unset VAL表示取消变量VAL。
1 #!/bin/sh
2 echo $@
3 echo $*
4 echo $0
5 echo $1
6 echo $#
7 echo $$
8 echo $?
执行./test_1.sh aa bb cc 结果:
位置变量:
解读一些简单的shell脚本例子:
1.
#!/bin/sh
echo "请输入三个参数:"
read VAL1 VAL2 VAL3 #传入的参数传给这3个变量
echo $VAL1
echo $VAL2
echo $VAL3
2.
#!/bin/sh
echo "请输入三个参数:"
read VAL1 VAL2 VAL3
SUM=`expr $VAL1 + $VAL2 + $VAL3` # expr表示进行运算的意思。
echo $SUM
test语句可测试三种对象:
字符串 整数 文件属性
每种测试对象都有若干测试操作符
例如:
test "$answer" = "yes"
变量answer的值是否为字符串yes
test $num –eq 18
变量num的值是否为整数18
test -d tmp
测试tmp是否为一个目录名
文件测试
数字测试
if…then…fi
语法结构:
if 表达式
then 命令表
fi
如果表达式为真, 则执行命令表中的命令; 否则退出if语句,即执行fi后面的语句.
if和fi是条件语句的语句括号,必须成对使用;命令表中的命令可以是一条,也可以是若干条.
if…then…else…fi
语法结构为:
if 表达式
then 命令表1
else 命令表2
fi
如果表达式为真, 则执行命令表1中的命令,退出if
语句; 否则执行命令表2中的语句,退出if语句.
if [ -d $1 ] # [ 和 -d 之间,1 和 ]之间也有空格。
then
echo"$1 is a directory"
exit (退出当前的shell程序)
else
if [ -f $1 ]
then
echo "$1 is a common file"
else
echo "unknown"
fi
fi
注意点:[ ] 与里面的条件一定要有空格。
case…esac
多路分支语句case用于多重条件测试,语法结构清晰自然. 其语法结构为:
case 字符串变量 in
模式1)
命令表1
;;
模式2)
命令表2
;;
……
模式n)
命令表n
;;
esac
if [ $# -eq 0 ]
then
echo "No argument is declared"
exit
fi
case $1 in
file1)
echo "User selects file1"
;;
file2)
echo "User selects file2"
;;
*)
echo "You must select either file1 orfile2!"
;;
esac
for…do…done
当循环次数已知或确定时, 使用for循环语句来多次执行一条或一组命令。 循环体由语句括号do和done来限定。格式为:
for 变量名 in 单词表
do
命令表
done
变量依次取单词表中的各个单词, 每取一次单词, 就执行一次循环体中的命令. 循环次数由单词表中的单词数确定.命令表中的命令可以是一条, 也可以是由分号或换行符分开的多条。
如果单词表是命令行上的所有位置参数时,可以在for语句中省略“in 单词表”部分。
1.
for i in $(seq 1 100); do
echo $i
done
2.
for (( i = 1 ; $i <= 100; i++ )) ;do
echo $i;
done
while…do…done
语法结构为: while 命令或表达式
do
命令表
done
while语句首先测试其后的命令或表达式的值,如果为真,就执行一次循环体中的命令,然后再测试该命令或表达式的值,执行循环体,直到该命令或表达式为假时退出循环。
while语句的退出状态为命令表中被执行的最后一条命令的退出状态。
until…do…done
语法结构为: until 命令或表达式
do
命令表
done
until循环与while循环的功能相似, 所不同的是只有当测试的命令或表达式的值是假时,才执行循环体中的命令表, 否则退出循环. 这一点与while命令正好相反.
if [ $# = 2 ]
then
loop=$2
else
loop=5
fi
i=1
while [ $i -lt $loop ]
do
echo“hello”>$1$i
i=`expr $i + 1`
done
for foo in'hello world' 'yuna' 'rikku'
do
echo $foo
done
exit 0
do
echo $foo
done
exit 0
break和continue
break n 则跳出n层;
continue语句则马上转到最近一层循环语句的下一轮循环上,
continue n则转到最近n层循环语句的下一轮循环上.
if [ $# = 0 ]
then
echo "Numeric arguments required"
exit
fi
if [ $# -gt 10 ]
then
echo "Only ten arguments allowed"
exit
fi
for number in $@
do
count=`expr $number % 2`
if[ $count -eq 1 ]
then
continue
else
output="$output $number"
fi
done
echo "Even numbers: $output "
1927

被折叠的 条评论
为什么被折叠?



