Перенаправление не отображается в качестве аргумента для сценария источника

Моя проблема в том, что я не могу печатать на экране, когда пишу скрипт bash

. myBashScript.sh < text.txt 

В myBashScript.sh я просто распечатываю

 echo $2 

Но вместо того, чтобы печатать «text.txt», он показывает «newLine». Как мне известно, «<» – это новая строка.

Почему $2 не text.txt ?

One Solution collect form web for “Перенаправление не отображается в качестве аргумента для сценария источника”

Я предполагаю, что вы на самом деле печатаете

 ./myBashScript.sh < text.txt 

с косой чертой.

Когда вы запускаете ./myBashScript.sh < text.txt , ваша интерактивная оболочка фактически захватывает < text.txt и интерпретирует ее как специальную инструкцию – в частности, она интерпретирует вашу командную строку как означающую, что она должна запускать myBashScript.sh со стандартным вход подключен к text.txt. Затем ваша оболочка удаляет < text.txt из командной строки перед передачей управления myBashScript.sh. Что касается вашего сценария оболочки, он получает нулевые аргументы, а $2 пуст. Ваш скрипт переводится просто так:

 echo 

который печатает новую строку.

Если вы хотите на самом деле напечатать имя файла, вам следует рассмотреть

 #!/bin/sh echo $1 

которые вы можете запустить:

 $ ./myShellScript text.txt text.txt 

Если, с другой стороны, вы хотите распечатать содержимое файла, вы должны использовать cat (1); ваш сценарий оболочки должен быть

 #!/bin/sh cat $1 

которые вы можете запустить:

 $ ./myShellScript text.txt Hello from text.txt, a file containing a bunch of test strings. 
  • Чтение строк из файла с помощью bash: for vs. while
  • Возможная ошибка перенаправления в zsh 5x
  • Задача Cron не записывать в файл журнала
  • Исключение отдельных строк от перенаправления
  • Что означает `1 >>` и `2 >>` в сценарии bash?
  • Какое перенаправление >> &?
  • Передайте аргумент скрипту, затем переадресовывайте скрипт как вход в bsub
  • Сохраните stdout и stderr в файле, затем заново создайте вывод позже
  • Применение символов Escape в перенаправленном выходе
  • Время, необходимое для вывода трубы на голову / хвост
  • Трубопровод к подстановке команд строки, содержащей трубы
  • Открытие более 10 дескрипторов файлов с помощью ksh
  • Interesting Posts
    Linux и Unix - лучшая ОС в мире.