为什么我的序列导致“意外令牌附近的语法错误”?

时间:2015-08-23 06:04:11

标签: bash

我已经编写了这个代码来ping多个IP地址,但它不起作用。谁能告诉我这里有什么问题?

#!/bin/bash
for i in 'seq 1 20' do  
    ping -c 1 "10.88.209.$i";
done

ps:它显示的错误是=> ./ping.sh:line 3:意外令牌附近的语法错误ping' ./ping.sh: line 3: ping -c 1“10.88.209。$ i”;'

2 个答案:

答案 0 :(得分:2)

使用:

for i in $(seq 1 20); do

for i in {1..20}; do

for ((i=0;i<=20;i++)); do

过时:

for i in `seq 1 20`; do

答案 1 :(得分:1)

您的语法已损坏。单引号和反向标记不可互换,并且for循环在do关键字之前需要分号或换行符。例如:

#!/usr/bin/env bash

for i in `seq 1 20`; do
    ping -c 1 "10.88.209.${i}"
done

您可以使用效率更高(也更具惯用性)的Bash brace-expansion sequence,而不是产生 seq 。例如:

#!/usr/bin/env bash

for i in {1..20}; do
    ping -c 1 "10.88.209.${i}"
done