Shell脚本执行方式

Shell脚本是从上到下、从左到右依次执行每一行的命令 执行完一条命令之后,再执行下一条命令。如果在脚本中遇到镶嵌脚本(子脚本)时,先执行子脚本,执行子脚本之后再去执行父脚本剩下的内容。

1.bash script_name 或者 sh script_name

无需执行权限,运行脚本时,脚本会在子shell中运行。

[root@shell ~]# ll test.sh
-rw-r--r-- 1 root root 21 2020-04-20 11:28 test.sh
[root@shell ~]# cat test.sh 
#!/bin/bash
ping baidu.com &>/dev/null

[root@shell ~]# pstree | grep sshd
        |-sshd-+-sshd---bash---sh---ping
        |      `-sshd---bash-+-grep

2. source script_name 或者 . script_name

不需要执行权限,脚本执行时会在当前shell下执行

[root@shell ~]# pstree | grep sshd
        |-sshd-+-sshd---bash---ping
        |      `-sshd---bash-+-grep

3. /PATH/script_name 或者 ./script_name

使用路径执行,脚本需要执行权限,脚本会在子shell中运行

[root@shell ~]# ./test.sh
-bash: ./test.sh: Permission denied
[root@shell ~]# ~/test.sh  
-bash: ~/test.sh: Permission denied

[root@shell ~]# pstree | grep sshd
        |-sshd-+-sshd---bash---test.sh---ping
        |      `-sshd---bash-+-grep

4. cat script_name | bash

不需要执行权限,脚本会在一个子shell中运行

[root@shell ~]# pstree | grep sshd
        |-sshd-+-sshd---bash---sh---ping
        |      `-sshd---bash-+-grep

5. bash < script_name 或者 sh < script_name

不需要执行权限,脚本运行时会在子shell中执行命令

[root@shell ~]# pstree | grep sshd
        |-sshd-+-sshd---bash---sh---ping
        |      `-sshd---bash-+-grep

 

点赞

发表回复