linux下常用的脚本包括 bash 和shell
1
#!/bin/bash
echo "hello bash" #display one message
将以上内容保存为一个文本文件,名为me。扩展名任意,但常用 .sh作为扩展名。
执行命令 chmod a+x me 命令,为me 添加执行权限。然后在Ternimal 中运行该脚本
./me
hello bash
2 获取输入参数
$n n为1-9自然数,代表输入中的第n个参数
#!/bin/bash
echo $1
echo $2
echo $3
执行该脚本,输出为:
./me i love you
i
love
you
3 定义变量
赋值语句中不能有空格,引用变量时只需变量前加上$符号即可。
为避免混淆,常常使用双引号包含要引用的变量
#!/bin/bash
A=b
All = all
echo "$A"ll
echo All
执行该脚本,输出为:
./me
bll
all
4 条件判断
if [ "$1" = "normal" ]
then
echo "this is normal case"
elif [ -z "$1" ]
then
echo "no input, ignal..."
fi
5 while [] ...do...donw 语句
#!/bin/bash
echo "please use add or delete or exit"
ACTION="default"
while [ -n $ACTION ]
do
read ACTION
case $ACTION in
add)
echo "add somebody"
;;
delete)
echo "delete somebody"
;;
exit)
echo "complete"
break
;;
*)
echo "invalide action, please re-enter"
;;
esac
done
6 for 循环
for 一般和in联合作用,用于从某个集合中逐个取出元素并对期进行操作,如下代码所示
#!/bin/bash
for X in 1 2 3 4 5 hello
do
echo $X
done
再举一个
`符号是!符号左边的键。
for X in `ls`
do
echo `basename $X`
echo `dirname $X`
done
uname
for语句和if语句为例
功能:给当前目录下没有扩展名的文件加上 .txt扩展名
#!/bin/bash
#rename files without ext name to txt file.
for X in `ls`
do
Base="`basename $X`"
if [ -z `echo $Base | grep "\."` ]
then
`mv $Base $Base.txt`
echo $Base
fi
done
7函数
#!/bin/bash
strcat()
{
OUT="$1"" ""$2"
return 0
}
strcat2()
{
echo "$1"" ""$2"
return 3
}
A="bird"
B="mouse"
OUT=""
strcat $A $B
echo $OUT
OUT2=`strcat2 $A $B`
echo $? #//上一个命令的返回结果
echo $OUT2
#执行该脚本,输出为:
./me
bird mouse
3
bird mouse
定义函数时,不需要定义参数,直接使用$1,$2代表第n个参数
可以使用return返回整数数值,不能返回字符串,不写return 默认是0