PART 1:
一个完整的shell脚本包括脚本声明、注释信息(可以没有)、可执行语句
脚本声明:告知系统用哪种shell来解释
注释信息:对脚本功能部分的介绍,执行脚本时会自动忽略,可不写
可执行语句:执行的具体指令
[root@okaka Desktop]# vim test.sh
编辑如下:
#!/bin/bash
#my first script
pwd
ls -al
保存后有3种方法执行脚本:
1.脚本文件路径: ./test.sh
2.sh脚本文件路径: sh test.sh
3.source脚本文件路径: source test.sh
后两种都可以顺利执行:
[root@okaka Desktop]# sh test.sh
/root/Desktop
total 8
drwxr-xr-x. 2 root root 20 Sep 19 12:46 .
dr-xr-x---. 17 root root 4096 Sep 19 12:46 ..
-rw-r--r--. 1 root root 40 Sep 19 12:41 test.sh
[root@okaka Desktop]# source test.sh
/root/Desktop
total 8
drwxr-xr-x. 2 root root 20 Sep 19 12:46 .
dr-xr-x---. 17 root root 4096 Sep 19 12:46 ..
-rw-r--r--. 1 root root 40 Sep 19 12:41 test.sh
但第一种直接执行会提示没有权限:
[root@okaka Desktop]# ./test.sh
bash: ./test.sh: Permission denied
所以需要为该脚本设置可执行权限才能运行(尚且不知道此命令的含义,日后深究,或者等评论解答):
[root@okaka Desktop]# chmod u+x test.sh
然后就可以运行了:
[root@okaka Desktop]# ./test.sh
/root/Desktop
total 8
drwxr-xr-x. 2 root root 20 Sep 19 12:46 .
dr-xr-x---. 17 root root 4096 Sep 19 12:46 ..
-rwxr--r--. 1 root root 40 Sep 19 12:41 test.sh
PART 2:
#my first script
echo "script name:$0"
echo "have $# params:$*"
echo "the 1st param is $1, 5th param is $5"
之后执行:
[root@okaka Desktop]# ./test.sh aaa bbb ccc ddd eee fff
script name:./test.sh
have 6 params:aaa bbb ccc ddd eee fff
the 1st param is aaa, 5th param is eee
可以看出:
$0是指当前执行的脚本名字
$1,$2,$3...及以后的是指用户输入的参数位置
$#是指用户所输入的参数个数
$*是指所有输入参数的值
另外$?用来判断上一条命令是否执行成功:0为成功,1为失败