如何运行脚本文件?

如何运行脚本文件?

运行这样的脚本文件有什么区别:

sh myfile.sh

或这个:

./myfile.sh

我认为它们是同一件事,但注意到有时它们不是,如下例所示:

root@kali:~/Documents# sh sweep-ips.sh
ips range:
ping: 10.11.1.{0..24}: Name or service not known

root@kali:~/Documents# ./sweep-ips.sh 
ips range:
64 bytes from 10.11.1.5: icmp_seq=1 ttl=128 time=242 ms
64 bytes from 10.11.1.8: icmp_seq=1 ttl=64 time=249 ms
64 bytes from 10.11.1.22: icmp_seq=1 ttl=255 time=249 ms
64 bytes from 10.11.1.24: icmp_seq=1 ttl=64 time=241 ms

脚本:

#!/bin/bash
echo "ips range"

for ip in 10.11.1.{0..24}
 do
   ping -c 1 ${ip} | grep "time=" 
 done

答案1

./script.sh正在以与执行二进制文件相同的方式执行脚本。#!如果它是脚本而不是二进制文件,则选择解释器。

bash script.sh作为解释器调用bash来执行脚本。

两者看起来几乎相同,但也有差异。

一个主要区别是script.sh必须可执行才能./script.sh工作。那就是有权限的文件644不能这样执行。另一方面,bash script.sh预定义解释器/bin/bash已经是可执行的。因此具有权限的文件644可以使用此方法。

相关内容