#shell #aix
Вопрос:
У меня есть приведенный ниже код в оболочке для «для цикла»
#!/bin/sh
for (( c=1; c<=5; c ))
do
echo "welcome $c times"
done
На бегу:
./test.sh
Ниже приведена ошибка:
./test.sh[2]: syntax error at line 2 : '(' unexpected.
Я перепробовал все возможные способы устранения этой ошибки.
#!/bin/sh
for (( c=1; c<=5; c )); do
echo "welcome $c times"
done
#!/bin/sh
for ( c=1; c<=5; c )
do
echo "welcome $c times"
done
#!/bin/sh
for c=1; c<=5; c
do
echo "welcome $c times"
done
#!/bin/sh
for (c=1; c<=5; c )
do
echo "welcome $c times"
done
#!/bin/sh
for (( c=1; c<=5; c ));
do
echo "welcome $c times"
done
Я читал другие статьи, в которых указывался bash. У меня нет bash в моей системе, поэтому я не могу его использовать.
Любое решение проблемы .sh для этой проблемы было бы большим подспорьем.
Заранее спасибо!
Комментарии:
1. к вашему сведению. Я отредактировал свой выпуск. Вы можете взглянуть. Спасибо!
2. Если бы вы заявили, чего хотите достичь, мы могли бы помочь больше. Например
seq 100 | while read N; do echo "N=$N"; done
, это вариант.3. У тебя есть кш?
4. @LorinczyZsigmond,
seq
не указан в POSIX и, следовательно, не более гарантированно будет доступен везде, чемbash
он сам.
Ответ №1:
Интерпретатор sh
оболочки не имеет циклической структуры, которую вы пытаетесь использовать. Вы можете использовать bash
, если он существует в вашей системе, или изменить цикл, чтобы он читался следующим образом
for c in 1 2 3 4 5
do
echo "welcome $c times"
done
Для больших циклов, где перечисление значений нецелесообразно, вы должны реализовать цикл с while
c=1
while [ $c -le 5 ]
do
echo "welcome $c times"
c=$((c 1))
done
Комментарии:
1. Спасибо за информацию. Поскольку данные слишком велики, я попытаюсь использовать цикл while.