2015-06-25 3 views
0

У меня проблема с сценарием оболочки с параметрами. Эта команда работает непосредственно на Linux работает:Вывод параметров командной строки

comm -13 <(sort /tmp/f1.txt) <(sort /tmp/f2.txt) > /tmp/f3.txt 

Если я пытаюсь запустить этот скрипт с помощью этой команды отправки параметров, и я получаю ошибку ниже:

test.sh: line 6: syntax error near unexpected token `(' 
'est.sh: line 6: `comm -13 <(sort $1) <(sort $2) > $3 

Вот моя оболочка код:

#!/bin/bash 
comm -13 <(sort $1) <(sort $2) > $3 

я запустить его с помощью следующей команды:

sh test.sh /tmp/f1.txt /tmp/f2.txt /tmp/f3.txt 

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

Спасибо, -Andrey

+1

'sh' не' 'bash' <(...)' является особенностью Баш. Не используйте 'sh' для запуска скрипта. Используйте 'bash'. –

+1

Причина, по всей видимости, заключается в том, что любой 'sh' в вашей системе означает, что он не поддерживает [замену процесса] (https://www.gnu.org/software/bash/manual/html_node/Process-Substitution.html#Process- Замена). Почему вы положили '#!/Bin/bash' в свой скрипт и используете' sh' для его выполнения? Смотрите это: https://www.gnu.org/software/bash/manual/html_node/Major-Differences-From-The-Bourne-Shell.html –

+0

Это сработало. Большое спасибо, ребята. – Andrey

ответ

1

Решения:

  1. Поскольку вы указали bash в подлиннике shebang, почему вы называете это с sh? Просто запустите ./test.sh /tmp/f1.txt /tmp/f2.txt /tmp/f3.txt

  2. bash Использование в явном виде: bash test.sh /tmp/f1.txt /tmp/f2.txt /tmp/f3.txt

+0

Это сработало. Большое спасибо! – Andrey

Смежные вопросы