. / command <<< кілька аргументів


-5

Якщо у мене є програма під назвою "прог", яка вимагає лише одного аргументу, я можу написати:

./prog <<< 1

Але якщо у мене є програма, яка вимагає двох аргументів, чому це не працює:

./prog <<< 2 3

Я не можу знайти відповідь Googling. Як це може працювати?

Примітка: Мені потрібно це написати .sh


<<< не надає аргументи , вона надає введення . Лінія введення, що складається з 2, простір, 3і новий рядок один рядок вводу , не два аргументи.
G-Man

Відповіді:


3

The <<< Документовано оператор bash(1) сторінка людини. Це для "тут рядків" (аналогічно в понятті "тут документи", які були навколо в синтаксисі оболонки для віків).

Синтаксис:

command <<< word

... розширюється word і передає його command як стандартний вхід.

Це еквівалент:

echo word | command

Якщо ви дійсно мали намір передати як 1 і 2 стандартний вхід (не аргументи / параметри), ви могли б зробити це за допомогою:

./command <<< "1 2"

або

./command <<< 1\ 2

В основному потрібно уникнути простору між 1 і 2, щоб уникнути розбиття входу на два слова.


-1

Не вдалося знайти посилання на "& lt; & lt; & lt;" оператор для bash, але він, здається, приймає текст відразу після оператора і розбирає його як першу змінну.

Якщо ви пишете сценарій BASH, це не є необхідним. Ви можете просто використовувати $ X для кожної змінної, а потім додати змінні до сценарію. Наприклад:

/bin/bash
echo "Usage:  $0 variable1 variable2"
echo "Variable 1 value is $1"
echo "Variable 2 value is $2"

Отже, якщо ви збережете вищезгаданий файл як "test.sh", зробіть його виконуваним як ./test.sh hello world

Він виведе Використання: ./test.sh variable1 variable2 Значення змінної 1 - це привіт Змінна 2 - це привіт світ

$ 0 = назва сценарію. Якщо ви хочете передати 2 параметри пробілами, наприклад "Hello World" і "This is a test", ви б назвали його як ./test.sh "Hello World" "його тест"


Завдяки @ davidgo, насправді, моя проблема була не в * .sh вхід, а в програмі "прог" введення. Я написав відповідь своїм рішенням.
yemino


-1

Ось як я вирішив свою проблему:

#/bin/bash
(echo 1 2)  |  ./prog
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.