shell脚本参数传递
在shell脚本中$加一个数字,这个数字一定是参数的序号,不能随便编号。比如参数有五个,那这5个参数必须是$1 $2 $3 $4 $5。
创建脚本文件 touch 01.sh
打开脚本文件 vim 01.sh
编写下面脚本代码:
#!/bin/bash
echo "参数 $1"
echo "参数 $2"
echo "参数长度 $#"
echo是打印输出。
退出脚本文件:回车换行 -> esc ->:wq!
将脚本文件变成可执行文件 chmod u+x 01.sh
下面我们执行脚本文件,传入参数
./01.sh 11 22 33
执行的结果:
参数 11
参数 22
参数长度 3
遍历所有参数
#!/bin/bash
echo "参数 $1"
echo "参数 $2"
echo "参数 $3"
echo "参数 $4"
echo "参数长度 $#"
for param in "$@"
do
echo "param:$param"
done
使用for循环来进行遍历,$@ 代表所有的参数的集合。
打印结果:
参数 11
参数 22
参数 33
参数 44
参数长度 5
param:11
param:22
param:33
param:44
param:55
if判断语句
下面代码判断文件目录是否存在
#!/bin/bash
myDir=/usr/bin
if [ -d $myDir ] && [ -d $HOME ]
then
echo "文件夹 存在"
touch test.txt
else
echo "文件夹不存在"
fi
这里的-d 参数判断$myPath目录是否存在
-d 检查是否存在,并且是一个目录
-e 检查file是否存在
-f 检查是否存在,并且是一个文件
-r 检查是否存在 可读
-w 检查文件是否可写
多条件语句
if后面一定加空格
switch语句
#!/bin/bash
testUser=$1
case $testUser in
one)
echo "tim";;
two)
echo "david";;
*)
echo "默认";;
esac
在shell脚本中switch语句没有switch这个关键字,默认的条件选项是*)。关键字esac表示结束。
运行该脚本的语句(该脚本名称为03.sh):
./03.sh one
运行结果:
tim
for循环
#!/bin/bash
for item in mother father brother
do
echo $item
done
list="mother father brother"
for item in $list
do
echo $item
done
list="Mother,Father,Brother"
IFS=$,
for item in $list
do
echo $item
done
while循环
#!/bin/bash
a=10
while [ $a -gt 0 ]
do
a=$[ $a - 1]
echo "a:$a"
if [ $a -eq 5 ]
then
echo "跳出循环"
break
fi
done
输出到文件
#!/bin/bash
file=test.txt
echo "david">$file
echo "tim">>$file
> 输出重定向
< 输入重定向
'>!':如果存在则覆盖
'>&':执行时屏幕上所产生的任何信息写入指定的文件中
'>>':追加到文件中
'>>&':屏幕上的信息追加到文件中
网友评论