Как передать ответы на скрипт CLI через аргументы?

Я пишу сценарий CLI, который задает ряд вопросов, прежде чем делать несколько вещей. Как я могу передать их в качестве аргументов, чтобы мне не приходилось вводить их каждый раз, когда я хочу проверить свой скрипт?

В принципе, он должен передать 4 элемента в STDIN, например «text1 [ENTER] text2 [ENTER] text3 [ENTER] text4 [ENTER] "автоматически.

Да, я мог бы изменить свой скрипт, чтобы действительно прочитать аргументы оболочки, но я не хочу так поступать, поскольку это Предположим, что он больше похож на мастера.

Ищете что-то вроде

SOMEPROGRAM myscript arg1 arg2 arg3 arg4

или

SOMEPROGRAM arg1 arg2 arg3 arg4 | myscript

Или что-то в этом роде. Есть ли такая программа?

4
задан 9 September 2011 в 22:35

42 ответа

Я понимаю, что вы не хотите изменять myscript.

Что касается второго решения, которое вы запрашиваете, вы можете использовать printf:

printf '%s\n' text1 text2 text3 text4 | myscript

, чтобы, определяя псевдоним для SOMEPROGRAM как:

alias SOMEPROGRAM="printf '%s\n'"

, вы могли бы эффективно вызвать

SOMEPROGRAM text1 text2 text3 text4 | myscript

Первая форма неоднозначна (с точки зрения SOMEPROGRAM), потому что она не " t знать, где начинаются параметры параметров myscript и текстовые параметры, если myscript не будет эффективно вызываться без каких-либо параметров. В этом случае вы можете использовать функцию:

SOMEPROGRAM() { myscript="$1" shift printf '%s\n' "$@" | "$myscript" }

, чтобы вы могли эффективно называть

SOMEPROGRAM myscript text1 text2 text3 text4
6
ответ дан 25 July 2018 в 21:20
  • 1
    Ха-ха ... вам не нужно было делать это дословно: p printf решение выглядит хорошо, мне придется попробовать это в понедельник! – mpen 10 September 2011 в 05:52
  • 2
    для решения printf я получаю stty: stdin isn't a terminal – mpen 14 September 2011 в 01:17
  • 3
    @Mark: хорошо, не все программы принимают равнодушный stdin или интерактивный ввод. Что вы myscript? – enzotib 14 September 2011 в 02:19
  • 4
    Это PHP-скрипт, который вводит ввод через $fp=fopen("php://stdin","r") и fgets($fp) – mpen 14 September 2011 в 02:56
  • 5
    @Mark: У меня нет знаний php, но мне интересно, почему строка stty в сообщении об ошибке. Было бы полезно увидеть усеченную, но полную версию myscript, которая все еще представляет проблему. – enzotib 14 September 2011 в 09:16

С помощью bash вы можете сделать это:

myscript << END arg1 arg2 arg3 arg4 END

или

myscript <<< $'arg1\narg2\narg3\narg4\
1
ответ дан 25 July 2018 в 21:20

Итак, в основном, вы хотите передать каждый аргумент как строку дочерней программе. Ниже приведен скрипт, который перебирает все аргументы, переданные ti SOMEPROGRAM, и печатает их как строку. Вы можете передать пустую строку («введите без ввода чего-либо раньше»), передав пустой аргумент, как в SOMEPROGRAM yes '' | myscript.

#!/bin/bash # This is "SOMEPROGRAM", it prints each argument as "answer" to a program that # must be piped. Usage: SOMEPROGRAM yes 1 no 2 | myscript for arg; do echo "$arg" done

Если вам всегда нужно ответить «да» на ваш сценарий, используйте coreutil yes:

yes | myscript

Если вам нужно передать какое-то другое значение, скажите «нет»:

yes 'no' | myscript
2
ответ дан 25 July 2018 в 21:20

Я почти уверен, что вы ожидаете.

изменить: пример добавлен

#!/bin/bash USER="root" HOST="192.168.1.111" PASS="secret" expect -c " spawn ssh $USER@$HOST expect \"password:\" send \"$PASS\r\" interact "

- из ожидать блог

1
ответ дан 25 July 2018 в 21:20
  • 1
    Но тогда вам нужно написать целый сценарий ожидания? Я надеялся, что смогу просто использовать некоторые аргументы командной строки или передать его через какую-либо программу без написания целого вторичного скрипта. Возможно, я просто мечтал. – mpen 21 February 2012 в 23:54
  • 2
    проверьте редактирование ... это не совсем другой скрипт, так как он все еще находится внутри одного сценария bash – RobotHumans 22 February 2012 в 02:59
  • 3
    Кроме того, что я писал скрипт PHP CLI, а не скрипт CLI. Хотя я мог бы, вероятно, shell_exec это ... не уверен, что это будет работать так или нет, хотя. Ну что ж. – mpen 22 February 2012 в 04:25

Для простых случаев способ, которым enzotib описывает его с помощью stdin из файла, кажется разумным. Рассмотрим этот скрипт:

#!/bin/bash read -p "What's your name?" name echo $name read -p "Age?" age echo $age echo "Your name is " $name " and your age is "$age

вызывать его с помощью:

echo -e "Foobar\n14\n" | ./namenage.sh

-e - включить escape-последовательности, такие как \n ewline.

Foobar 14 Your name is Foobar and your age is 14

Обратите внимание, как магически, bash не выводит приглашение для чтения.

Однако для более сложных случаев существует программа, называемая expect для обработки интерактивных программ CLI, где вам нужно дождаться следующего приглашения, прежде чем вводить второе значение, и я думаю, вы можете даже ветвь в условиях.

1
ответ дан 25 July 2018 в 21:20
  • 1
    Решение echo выглядит неплохо. Это на самом деле скрипт PHP CLI, но я придерживаюсь примерно того же формата, что и ваш пример, поэтому я думаю, что он должен работать. – mpen 10 September 2011 в 05:57

Если вы пишете скрипт, просто используйте getopts, чтобы аргументы были переданы скриптам, а затем вы можете использовать эти аргументы, как хотите? Это то, что вы ищете?

http://wiki.bash-hackers.org/howto/getopts_tutorial

1
ответ дан 25 July 2018 в 21:20
  • 1
    Я просто процитирую себя здесь ... & quot; Да, я мог бы изменить свой сценарий, чтобы действительно прочитать аргументы оболочки, но я не хочу так поступать, поскольку он должен работать скорее как мастер. & Quot; – mpen 10 September 2011 в 05:53

Вы можете передать параметры, но это не сработает, вам также придется модифицировать скрипт bash, чтобы принимать параметры из командной строки.

1
ответ дан 25 July 2018 в 21:20
  • 1
    Почему это? Это просто чтение из четырех вещей из STDIN по одному, и вы можете передавать вещи в STDIN ... поэтому я не вижу проблемы. – mpen 10 September 2011 в 05:52

Я понимаю, что вы не хотите изменять myscript.

Что касается второго решения, которое вы запрашиваете, вы можете использовать printf:

printf '%s\n' text1 text2 text3 text4 | myscript

, чтобы, определяя псевдоним для SOMEPROGRAM как:

alias SOMEPROGRAM="printf '%s\n'"

, вы могли бы эффективно вызвать

SOMEPROGRAM text1 text2 text3 text4 | myscript

Первая форма неоднозначна (с точки зрения SOMEPROGRAM), потому что она не " t знать, где начинаются параметры параметров myscript и текстовые параметры, если myscript не будет эффективно вызываться без каких-либо параметров. В этом случае вы можете использовать функцию:

SOMEPROGRAM() { myscript="$1" shift printf '%s\n' "$@" | "$myscript" }

, чтобы вы могли эффективно называть

SOMEPROGRAM myscript text1 text2 text3 text4
6
ответ дан 2 August 2018 в 03:00
  • 1
    Хаха...Вы не должны сделать его дословно :решение п printf выглядит хорошо, я обязательно попробую это в понедельник! – mpen 10 September 2011 в 05:52
  • 2
    для решения printf я получаю stty: stdin isn't a terminal – mpen 14 September 2011 в 01:17
  • 3
    @Mark: хорошо, не все программы принимают равнодушный stdin или интерактивный ввод. Что вы myscript? – enzotib 14 September 2011 в 02:19
  • 4
    Это PHP-скрипт, который вводит ввод через $fp=fopen("php://stdin","r") и fgets($fp) – mpen 14 September 2011 в 02:56
  • 5
    @Mark: У меня нет знаний php, но мне интересно, почему строка stty в сообщении об ошибке. Было бы полезно увидеть усеченную, но полную версию myscript, которая все еще представляет проблему. – enzotib 14 September 2011 в 09:16

С помощью bash вы можете сделать это:

myscript << END arg1 arg2 arg3 arg4 END

или

myscript <<< $'arg1\narg2\narg3\narg4\
1
ответ дан 2 August 2018 в 03:00

Итак, в основном, вы хотите передать каждый аргумент как строку дочерней программе. Ниже приведен скрипт, который перебирает все аргументы, переданные ti SOMEPROGRAM, и печатает их как строку. Вы можете передать пустую строку («введите без ввода чего-либо раньше»), передав пустой аргумент, как в SOMEPROGRAM yes '' | myscript.

#!/bin/bash # This is "SOMEPROGRAM", it prints each argument as "answer" to a program that # must be piped. Usage: SOMEPROGRAM yes 1 no 2 | myscript for arg; do echo "$arg" done

Если вам всегда нужно ответить «да» на ваш сценарий, используйте coreutil yes:

yes | myscript

Если вам нужно передать какое-то другое значение, скажите «нет»:

yes 'no' | myscript
2
ответ дан 2 August 2018 в 03:00

Я почти уверен, что вы ожидаете.

изменить: пример добавлен

#!/bin/bash USER="root" HOST="192.168.1.111" PASS="secret" expect -c " spawn ssh $USER@$HOST expect \"password:\" send \"$PASS\r\" interact "

- из ожидать блог

1
ответ дан 2 August 2018 в 03:00
  • 1
    Но тогда вам нужно написать целый сценарий ожидания? Я надеялся, что смогу просто использовать некоторые аргументы командной строки или передать его через какую-либо программу без написания целого вторичного скрипта. Возможно, я просто мечтал. – mpen 21 February 2012 в 23:54
  • 2
    проверьте редактирование ... это не совсем другой скрипт, так как он все еще находится внутри одного сценария bash – RobotHumans 22 February 2012 в 02:59
  • 3
    Кроме того, что я писал скрипт PHP CLI, а не скрипт CLI. Хотя я мог бы, вероятно, shell_exec это ... не уверен, что это будет работать так или нет, хотя. Ну что ж. – mpen 22 February 2012 в 04:25

Для простых случаев способ, которым enzotib описывает его с помощью stdin из файла, кажется разумным. Рассмотрим этот скрипт:

#!/bin/bash read -p "What's your name?" name echo $name read -p "Age?" age echo $age echo "Your name is " $name " and your age is "$age

вызывать его с помощью:

echo -e "Foobar\n14\n" | ./namenage.sh

-e - включить escape-последовательности, такие как \n ewline.

Foobar 14 Your name is Foobar and your age is 14

Обратите внимание, как магически, bash не выводит приглашение для чтения.

Однако для более сложных случаев существует программа, называемая expect для обработки интерактивных программ CLI, где вам нужно дождаться следующего приглашения, прежде чем вводить второе значение, и я думаю, вы можете даже ветвь в условиях.

1
ответ дан 2 August 2018 в 03:00
  • 1
    Решение echo выглядит неплохо. Это на самом деле скрипт PHP CLI, но я придерживаюсь примерно того же формата, что и ваш пример, поэтому я думаю, что он должен работать. – mpen 10 September 2011 в 05:57

Если вы пишете скрипт, просто используйте getopts, чтобы аргументы были переданы скриптам, а затем вы можете использовать эти аргументы, как хотите? Это то, что вы ищете?

http://wiki.bash-hackers.org/howto/getopts_tutorial

1
ответ дан 2 August 2018 в 03:00
  • 1
    Я просто процитирую себя здесь ... & quot; Да, я мог бы изменить свой сценарий, чтобы действительно прочитать аргументы оболочки, но я не хочу так поступать, поскольку он должен работать скорее как мастер. & Quot; – mpen 10 September 2011 в 05:53

Вы можете передать параметры, но это не сработает, вам также придется модифицировать скрипт bash, чтобы принимать параметры из командной строки.

1
ответ дан 2 August 2018 в 03:00
  • 1
    Почему это? Это просто чтение из четырех вещей из STDIN по одному, и вы можете передавать вещи в STDIN ... поэтому я не вижу проблемы. – mpen 10 September 2011 в 05:52

Я понимаю, что вы не хотите изменять myscript.

Что касается второго решения, которое вы запрашиваете, вы можете использовать printf:

printf '%s\n' text1 text2 text3 text4 | myscript

, чтобы, определяя псевдоним для SOMEPROGRAM как:

alias SOMEPROGRAM="printf '%s\n'"

, вы могли бы эффективно вызвать

SOMEPROGRAM text1 text2 text3 text4 | myscript

Первая форма неоднозначна (с точки зрения SOMEPROGRAM), потому что она не " t знать, где начинаются параметры параметров myscript и текстовые параметры, если myscript не будет эффективно вызываться без каких-либо параметров. В этом случае вы можете использовать функцию:

SOMEPROGRAM() { myscript="$1" shift printf '%s\n' "$@" | "$myscript" }

, чтобы вы могли эффективно называть

SOMEPROGRAM myscript text1 text2 text3 text4
6
ответ дан 4 August 2018 в 18:50
  • 1
    Ха-ха ... вам не нужно было делать это дословно: p printf решение выглядит хорошо, мне придется попробовать это в понедельник! – mpen 10 September 2011 в 05:52
  • 2
    для решения printf я получаю stty: stdin isn't a terminal – mpen 14 September 2011 в 01:17
  • 3
    @Mark: хорошо, не все программы принимают равнодушный stdin или интерактивный ввод. Что вы myscript? – enzotib 14 September 2011 в 02:19
  • 4
    Это PHP-скрипт, который вводит ввод через $fp=fopen("php://stdin","r") и fgets($fp) – mpen 14 September 2011 в 02:56
  • 5
    @Mark: У меня нет знаний php, но мне интересно, почему строка stty в сообщении об ошибке. Было бы полезно увидеть усеченную, но полную версию myscript, которая все еще представляет проблему. – enzotib 14 September 2011 в 09:16

С помощью bash вы можете сделать это:

myscript << END arg1 arg2 arg3 arg4 END

или

myscript <<< $'arg1\narg2\narg3\narg4\
1
ответ дан 4 August 2018 в 18:50

Итак, в основном, вы хотите передать каждый аргумент как строку дочерней программе. Ниже приведен скрипт, который перебирает все аргументы, переданные ti SOMEPROGRAM, и печатает их как строку. Вы можете передать пустую строку («введите без ввода чего-либо раньше»), передав пустой аргумент, как в SOMEPROGRAM yes '' | myscript.

#!/bin/bash # This is "SOMEPROGRAM", it prints each argument as "answer" to a program that # must be piped. Usage: SOMEPROGRAM yes 1 no 2 | myscript for arg; do echo "$arg" done

Если вам всегда нужно ответить «да» на ваш сценарий, используйте coreutil yes:

yes | myscript

Если вам нужно передать какое-то другое значение, скажите «нет»:

yes 'no' | myscript
2
ответ дан 4 August 2018 в 18:50

Я почти уверен, что вы ожидаете.

изменить: пример добавлен

#!/bin/bash USER="root" HOST="192.168.1.111" PASS="secret" expect -c " spawn ssh $USER@$HOST expect \"password:\" send \"$PASS\r\" interact "

- из ожидать блог

1
ответ дан 4 August 2018 в 18:50
  • 1
    Но тогда вам нужно написать целый сценарий ожидания? Я надеялся, что смогу просто использовать некоторые аргументы командной строки или передать его через какую-либо программу без написания целого вторичного скрипта. Возможно, я просто мечтал. – mpen 21 February 2012 в 23:54
  • 2
    проверьте редактирование ... это не совсем другой скрипт, так как он все еще находится внутри одного сценария bash – RobotHumans 22 February 2012 в 02:59
  • 3
    Кроме того, что я писал скрипт PHP CLI, а не скрипт CLI. Хотя я мог бы, вероятно, shell_exec это ... не уверен, что это будет работать так или нет, хотя. Ну что ж. – mpen 22 February 2012 в 04:25

Для простых случаев способ, которым enzotib описывает его с помощью stdin из файла, кажется разумным. Рассмотрим этот скрипт:

#!/bin/bash read -p "What's your name?" name echo $name read -p "Age?" age echo $age echo "Your name is " $name " and your age is "$age

вызывать его с помощью:

echo -e "Foobar\n14\n" | ./namenage.sh

-e - включить escape-последовательности, такие как \n ewline.

Foobar 14 Your name is Foobar and your age is 14

Обратите внимание, как магически, bash не выводит приглашение для чтения.

Однако для более сложных случаев существует программа, называемая expect для обработки интерактивных программ CLI, где вам нужно дождаться следующего приглашения, прежде чем вводить второе значение, и я думаю, вы можете даже ветвь в условиях.

1
ответ дан 4 August 2018 в 18:50
  • 1
    Решение echo выглядит неплохо. Это на самом деле скрипт PHP CLI, но я придерживаюсь примерно того же формата, что и ваш пример, поэтому я думаю, что он должен работать. – mpen 10 September 2011 в 05:57

если вы пишете сценарий, то просто воспользуйтесь команде getopts так как аргументы передаются в скрипт и затем вы можете использовать эти аргументы, как вы хотите? Это то, что вы ищете?

http://wiki.bash-hackers.org/howto/getopts_tutorial

1
ответ дан 4 August 2018 в 18:50
  • 1
    Я просто процитирую себя здесь ... & quot; Да, я мог бы изменить свой сценарий, чтобы действительно прочитать аргументы оболочки, но я не хочу так поступать, поскольку он должен работать скорее как мастер. & Quot; – mpen 10 September 2011 в 05:53

Вы можете передать параметры, но это не сработает, вам также придется модифицировать скрипт bash, чтобы принимать параметры из командной строки.

1
ответ дан 4 August 2018 в 18:50
  • 1
    Почему это? Это просто чтение из четырех вещей из STDIN по одному, и вы можете передавать вещи в STDIN ... поэтому я не вижу проблемы. – mpen 10 September 2011 в 05:52

Я понимаю, что вы не хотите изменять myscript.

Что касается второго решения, которое вы запрашиваете, вы можете использовать printf:

printf '%s\n' text1 text2 text3 text4 | myscript

, чтобы, определяя псевдоним для SOMEPROGRAM как:

alias SOMEPROGRAM="printf '%s\n'"

, вы могли бы эффективно вызвать

SOMEPROGRAM text1 text2 text3 text4 | myscript

Первая форма неоднозначна (с точки зрения SOMEPROGRAM), потому что она не " t знать, где начинаются параметры параметров myscript и текстовые параметры, если myscript не будет эффективно вызываться без каких-либо параметров. В этом случае вы можете использовать функцию:

SOMEPROGRAM() { myscript="$1" shift printf '%s\n' "$@" | "$myscript" }

, чтобы вы могли эффективно называть

SOMEPROGRAM myscript text1 text2 text3 text4
6
ответ дан 6 August 2018 в 03:13
  • 1
    Ха-ха ... вам не нужно было делать это дословно: p printf решение выглядит хорошо, мне придется попробовать это в понедельник! – mpen 10 September 2011 в 05:52
  • 2
    для решения printf я получаю stty: stdin isn't a terminal – mpen 14 September 2011 в 01:17
  • 3
    @Mark: хорошо, не все программы принимают равнодушный stdin или интерактивный ввод. Что вы myscript? – enzotib 14 September 2011 в 02:19
  • 4
    Это PHP-скрипт, который вводит ввод через $fp=fopen("php://stdin","r") и fgets($fp) – mpen 14 September 2011 в 02:56
  • 5
    @Mark: У меня нет знаний php, но мне интересно, почему строка stty в сообщении об ошибке. Было бы полезно увидеть усеченную, но полную версию myscript, которая все еще представляет проблему. – enzotib 14 September 2011 в 09:16

в bash, вы можете сделать это:

myscript << END arg1 arg2 arg3 arg4 END

или

myscript <<< $'arg1\narg2\narg3\narg4\
1
ответ дан 6 August 2018 в 03:13

Итак, в основном, вы хотите передать каждый аргумент как строку дочерней программе. Ниже приведен скрипт, который перебирает все аргументы, переданные ti SOMEPROGRAM, и печатает их как строку. Вы можете передать пустую строку («введите без ввода чего-либо раньше»), передав пустой аргумент, как в SOMEPROGRAM yes '' | myscript.

#!/bin/bash # This is "SOMEPROGRAM", it prints each argument as "answer" to a program that # must be piped. Usage: SOMEPROGRAM yes 1 no 2 | myscript for arg; do echo "$arg" done

Если вам всегда нужно ответить «да» на ваш сценарий, используйте coreutil yes:

yes | myscript

Если вам нужно передать какое-то другое значение, скажите «нет»:

yes 'no' | myscript
2
ответ дан 6 August 2018 в 03:13

Я почти уверен, что вы ожидаете.

изменить: пример добавлен

#!/bin/bash USER="root" HOST="192.168.1.111" PASS="secret" expect -c " spawn ssh $USER@$HOST expect \"password:\" send \"$PASS\r\" interact "

- из ожидать блог

1
ответ дан 6 August 2018 в 03:13
  • 1
    Но тогда вам нужно написать целый сценарий ожидания? Я надеялся, что смогу просто использовать некоторые аргументы командной строки или передать его через какую-либо программу без написания целого вторичного скрипта. Возможно, я просто мечтал. – mpen 21 February 2012 в 23:54
  • 2
    проверьте редактирование ... это не совсем другой скрипт, так как он все еще находится внутри одного сценария bash – RobotHumans 22 February 2012 в 02:59
  • 3
    Кроме того, что я писал скрипт PHP CLI, а не скрипт CLI. Хотя я мог бы, вероятно, shell_exec это ... не уверен, что это будет работать так или нет, хотя. Ну что ж. – mpen 22 February 2012 в 04:25

Для простых случаев способ, которым enzotib описывает его с помощью stdin из файла, кажется разумным. Рассмотрим этот скрипт:

#!/bin/bash read -p "What's your name?" name echo $name read -p "Age?" age echo $age echo "Your name is " $name " and your age is "$age

вызывать его с помощью:

echo -e "Foobar\n14\n" | ./namenage.sh

-e - включить escape-последовательности, такие как \n ewline.

Foobar 14 Your name is Foobar and your age is 14

Обратите внимание, как магически, bash не выводит приглашение для чтения.

Однако для более сложных случаев существует программа, называемая expect для обработки интерактивных программ CLI, где вам нужно дождаться следующего приглашения, прежде чем вводить второе значение, и я думаю, вы можете даже ветвь в условиях.

1
ответ дан 6 August 2018 в 03:13
  • 1
    Решение echo выглядит неплохо. Это на самом деле скрипт PHP CLI, но я придерживаюсь примерно того же формата, что и ваш пример, поэтому я думаю, что он должен работать. – mpen 10 September 2011 в 05:57

Если вы пишете скрипт, просто используйте getopts, чтобы аргументы были переданы скриптам, а затем вы можете использовать эти аргументы, как хотите? Это то, что вы ищете?

http://wiki.bash-hackers.org/howto/getopts_tutorial

1
ответ дан 6 August 2018 в 03:13
  • 1
    Я просто процитирую себя здесь ... & quot; Да, я мог бы изменить свой сценарий, чтобы действительно прочитать аргументы оболочки, но я не хочу так поступать, поскольку он должен работать скорее как мастер. & Quot; – mpen 10 September 2011 в 05:53

Вы можете передать параметры, но это не сработает, вам также придется модифицировать скрипт bash, чтобы принимать параметры из командной строки.

1
ответ дан 6 August 2018 в 03:13
  • 1
    Почему это? Это просто чтение из четырех вещей из STDIN по одному, и вы можете передавать вещи в STDIN ... поэтому я не вижу проблемы. – mpen 10 September 2011 в 05:52

Я понимаю, что вы не хотите изменять myscript.

Что касается второго решения, которое вы запрашиваете, вы можете использовать printf:

printf '%s\n' text1 text2 text3 text4 | myscript

, чтобы, определяя псевдоним для SOMEPROGRAM как:

alias SOMEPROGRAM="printf '%s\n'"

, вы могли бы эффективно вызвать

SOMEPROGRAM text1 text2 text3 text4 | myscript

Первая форма неоднозначна (с точки зрения SOMEPROGRAM), потому что она не " t знать, где начинаются параметры параметров myscript и текстовые параметры, если myscript не будет эффективно вызываться без каких-либо параметров. В этом случае вы можете использовать функцию:

SOMEPROGRAM() { myscript="$1" shift printf '%s\n' "$@" | "$myscript" }

, чтобы вы могли эффективно называть

SOMEPROGRAM myscript text1 text2 text3 text4
6
ответ дан 7 August 2018 в 20:54
  • 1
    Ха-ха ... вам не нужно было делать это дословно: p printf решение выглядит хорошо, мне придется попробовать это в понедельник! – mpen 10 September 2011 в 05:52
  • 2
    для решения printf я получаю stty: stdin isn't a terminal – mpen 14 September 2011 в 01:17
  • 3
    @Mark: хорошо, не все программы принимают равнодушный stdin или интерактивный ввод. Что вы myscript? – enzotib 14 September 2011 в 02:19
  • 4
    Это PHP-скрипт, который вводит ввод через $fp=fopen("php://stdin","r") и fgets($fp) – mpen 14 September 2011 в 02:56
  • 5
    @Mark: У меня нет знаний php, но мне интересно, почему строка stty в сообщении об ошибке. Было бы полезно увидеть усеченную, но полную версию myscript, которая все еще представляет проблему. – enzotib 14 September 2011 в 09:16

С помощью bash вы можете сделать это:

myscript << END arg1 arg2 arg3 arg4 END

или

myscript <<< $'arg1\narg2\narg3\narg4\
1
ответ дан 7 August 2018 в 20:54

Другие вопросы по тегам:

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