script——不需要编译的程序文件
可以在脚本中调用Linux命令。
获取输入
- 执行脚本时用户的输入:$n,代表输入中的第n个参数。
#!/bin/bash echo $1 echo $2 echo $3
执行:$./me i love you
输出:
i
love
you - 将前一个脚本的输出作为该脚本的输入
- 脚本函数的参数
变量定义
所有的变量都是字符串,可直接赋值,赋值语句中不能有空格。
引用变量时:在变量前加$
符号,并用双引号包含以避免引用混淆。
#!/bin/bash
A=b
All=all
echo "$A"ll
echo $All
条件判断
#!/bin/bash
if [ "$1" = "normal" ]
then
echo "this is normal case"
elif [ -z "$1" ]
then
echo "no input, ignal..."
fi
~if的[后必须有空格
while []...do... done语句
#!/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 "invalidate action, please re-enter"
;;
esac
done
for循环
Bash中的for循环类似于java中的foreach语句,一般与in联合使用,用于才能够某个集合中取出元素并对其进行操作。
#!/bin/bash
for X in 1 2 3 4 5 hello
do
echo $X
done
~显示in集合中的所有元素,in集合——in语句后紧跟的目标集合。
#!/bin/bash
for X in ls
do
echo basename $X
echo dirname $X
done
uname
uname用于显示操作系统的内部名称。
#!/bin/bash
#rename files without ext name to txt name
#author:Yuandan Kerr
for X in ls
do
Base="basename $X
"
if [ -z echo $Base | grep "\."
]
then
mv $Base $Base.txt
echo $Base
fi
done
函数
#!/bin/bash
stract()
{
OUT="$1"" ""$2"
return 0
}
stract2()
{
echo "$1"" ""$2"
return 3
}
A="bird"
B="mouse"
OUT=""
stract $A $B
echo $OUT
OUT2=`stract2 $A $B`
echo $?
echo $OUT2
定义函数的特点:
- 不需要定义参数,在函数实体中直接使用$n代表输入的第n个参数。
- return返回的是函数执行完毕的退出值,OUT赋值结果是函数体中
echo "$1"" ""$2"
输出的结果。 -
OUT2='echo "$1"" ""$2"'
-> 调用函数时,要想获得函数的输出,并且赋值给某个变量,则函数的执行必须包含在``符号之间。 - $3 - > 获得函数的返回值而不是输出。
输出结果:
bird mouse
3
bird mouse
常用内置符号常量
-
$@
-> 代表全部参数,test a b c -> "a","b","c"三个字符串 -
$*
-> 全部参数,test a b c -> "a b c"一个字符串 -
$#
-> 参数的个数 -
$?
-> 上一个命令的返回结果 -
$$
-> 当前命令所在的进程号(PID)
网友评论