Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
输入多个变量的Bash脚本_Bash_Shell_Unix_Scripting - Fatal编程技术网

输入多个变量的Bash脚本

输入多个变量的Bash脚本,bash,shell,unix,scripting,Bash,Shell,Unix,Scripting,我使用一个简单的shell脚本来阻止IP地址,它只是用我的输入(IP)替换iptables、IPFW等命令中的变量(取决于所使用的平台),但它们基本上都遵循以下格式: read -p "IP to Block: " ip ipfw add deny ip from $ip to any 是否可以简单地按顺序执行一组用户定义的变量。例如,三个IP地址,并让脚本对每个变量执行三次,但将我的输入限制为一个提示(被要求输入一次)?听起来您想这样做: for ip in $@; do ipfw

我使用一个简单的shell脚本来阻止IP地址,它只是用我的输入(IP)替换iptables、IPFW等命令中的变量(取决于所使用的平台),但它们基本上都遵循以下格式:

read -p "IP to Block: " ip

ipfw add deny ip from $ip to any

是否可以简单地按顺序执行一组用户定义的变量。例如,三个IP地址,并让脚本对每个变量执行三次,但将我的输入限制为一个提示(被要求输入一次)?

听起来您想这样做:

for ip in $@; do
    ipfw add deny ip from $ip to any
done
我不确定这是否是
ipfw
的确切用法,但
$@
是命令中除第一个单词外的每个单词,因此它可以用于:

your-script-name 1.2.3.4   1.3.4.5   1.4.5.6

太好了,谢谢。对于IPFW,只要每个变量打印为每个命令实例的单个IP地址,那么这就足以满足脚本要覆盖的防火墙管理级别。您也可以在脚本
read-p“IPs to Block(用空格分隔):”中使用它与带提示的读取一起使用ip
,然后以$ips表示ip的
;改为…
。然后在没有参数的情况下运行它。