以下内容源于C语言中文网的学习与整理,非原创,如有侵权请告知删除。
在文本编辑器中编写如下代码并保存为test.sh。
#!/bin/bash echo "Hello World !"
这个文件的扩展名为sh(sh代表shell),但其实扩展名并不影响脚本执行,见名知意就好。
“#!” 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种Shell。
运行Shell脚本以下有三种方法。
归类一:在新进程中运行Shell脚本
1、作为可执行程序
修改脚本的权限,使脚本具有可执行权限,然后执行脚本。这是在新进程中运行Shell脚本。
xjh@ubuntu:~/iot/tmp$ ls test.sh -l -rw-rw-r-- 1 xjh xjh 33 七月 3 14:29 test.sh xjh@ubuntu:~/iot/tmp$ chmod 777 test.sh xjh@ubuntu:~/iot/tmp$ ls test.sh -l -rwxrwxrwx 1 xjh xjh 33 七月 3 14:29 test.sh xjh@ubuntu:~/iot/tmp$ test.sh test.sh: command not found xjh@ubuntu:~/iot/tmp$ ./test.sh Hello World ! xjh@ubuntu:~/iot/tmp$
注意
(1)一定要写成./test.sh,而不是test.sh。运行其它二进制的程序也一样,直接写test.sh,linux系统会去PATH里寻找有没有叫test.sh的,而只有/bin, /sbin, /usr/bin,/usr/sbin等在PATH里,你的当前目录通常不在PATH里,所以写成test.sh是会找不到命令的,要用./test.sh告诉系统“就在当前目录找”。
(2)通过这种方式运行bash脚本,第一行一定要写对,好让系统查找到正确的解释器。
2、作为解释器参数
这种运行方式是,直接运行解释器,其参数就是shell脚本的文件名,如:
xjh@ubuntu:~/iot/tmp$ /bin/sh test.sh Hello World ! xjh@ubuntu:~/iot/tmp$
这种方式运行的脚本,不需要在第一行指定解释器信息,写了也没用。
归类二:在当前进程中运行Shell脚本
3、使用source命令
该命令会读取脚本文件中的代码,并依次执行所有语句。
另外,使用source命令,不要求该文件具有可执行权限。
xjh@ubuntu:~/iot/tmp$ source test.sh Hello World ! xjh@ubuntu:~/iot/tmp$ chmod 666 test.sh xjh@ubuntu:~/iot/tmp$ ls -l test.sh -rw-rw-rw- 1 xjh xjh 33 七月 3 14:29 test.sh xjh@ubuntu:~/iot/tmp$ source test.sh Hello World ! xjh@ubuntu:~/iot/tmp$