Получение следующей ошибки: -bash: 1: команда не найдена при попытке выполнить цикл for

Примите ввод в командной строке, а не в интерактивном режиме. (Пожалуйста!)

Это достаточно просто, я бы просто использовал функцию оболочки.

iter_the_command() {
  max=5
  [ "$#" -eq 1 ] && [ "$1" -ge 1 ] && [ "$1" -le "$max" ] ||
    { printf 'Error: please pass a number from 1 to %d\n' "$max" >&2;
      return 1;}
  for i in $(seq "$max"); do
    [ "$i" -eq "$1" ] && continue
    somecommand "$1" "$i"
  done
}

Однако , у меня есть сильное подозрение, что это XY-вопрос, и то, что вы на самом деле пытаетесь сделать, было бы легче выполнить напрямую. (Другими словами, мне трудно представить себе сценарий, в котором приведенный выше код был бы действительно полезным и выполнял бы необходимую функцию, которую нельзя было бы сделать иначе.)

1
29.08.2019, 08:29
3 ответа

При первом выполнении цикла xбудет 1, поэтому вы выполняете echo $(1 >> c.txt), а оболочка пытается выполнить 1, но не находит.

Если вы добавите то, что на самом деле пытаетесь сделать, мы сможем указать, что нужно изменить.

3
27.01.2020, 23:17

Что делает оболочка, когда видит echo $($x >> c.txt), так это сначала обрабатывает подстановку команд $($x >> c.txt). Это будет заменено выводом команды $x >> c.txt. $x— это 1в первой итерации цикла, но такой команды нет, поэтому ошибки (будут одной ошибкой для каждой итерации цикла, если у вас нет команд, соответствующих целым числам в диапазон от 1 до 10; вывод в вопросе, вероятно, усечен ).

Возможно, вы хотели сделать что-то вроде

for x in $(seq 10); do
   echo "$x" >>c.txt
done

(без подстановки команд )или просто

seq 10 >>c.txt

, что имело бы эквивалентный эффект.

2
27.01.2020, 23:17

Я думаю, что ваше определение bash неправильно определено в сценарии.

Выход:

-bash: 1: command not found

Обычно относится к плохо написанному определению bash, убедитесь, что оно определено следующим образом в первой строке скрипта:

#!/bin/bash

Если местоположение bash отличается, вы также можете найти его с помощью:

which bash
-1
27.01.2020, 23:17

Теги

Похожие вопросы