Я могу запустить код из терминала, но ту же команду, выдающую ошибку при запуске в сценарии оболочки

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

#!/bin/bash diff <((sort doc1) <(sort doc2)) | grep -x '.\{6\}' >sample.txt 

Я получаю эту ошибку при запуске оболочки:

 /App$ sh filediff.sh filediff.sh: 4: filediff.sh: Syntax error: "(" unexpected 

2 Solutions collect form web for “Я могу запустить код из терминала, но ту же команду, выдающую ошибку при запуске в сценарии оболочки”

Когда вы запускаете команду diff в обычной оболочке, вы используете текущую оболочку (в основном bash).

Вы отступали, чтобы использовать оболочку bash для своего скрипта, но если вы вызываете свой скрипт с помощью «sh filediff.sh», вы вызываете sh-Shell, который немного отличается от bash.

Вы можете вызвать свой скрипт с помощью

 bash filediff.sh 

или вы выполняете его с помощью

 chmod +x filediff.sh 

и назовите его

 ./filediff.sh 

Команда diff работает для анализа двух файлов и печатает строки, которые отличаются друг от друга. Вы не предоставляете правильные входные файлы для команды diff:

Простой модифицированный рабочий скрипт:

 sort doc1 | tee tempdoc1 sort doc2 | tee tempdoc2 diff tempdoc1 tempdoc2 | grep -x '.\{6\}' > sample.txt echo "Following is difference:" cat sample.txt 
  • Как вы узнали, что находитесь на последней строке при переходе через файл?
  • Получить все файлы, кроме файлов в массиве - Bash
  • Загрузка выходного текста без файлов записи
  • извлечение определенных подстрок из строки
  • один лайнер для использования памяти
  • Выполнить список команд с контрольной точкой?
  • Команда Bash для разделения одной строки текста на две строки
  • Получение количества строк и сохранение в результирующем наборе
  • Как создать функцию, которая принимает имя с целым суффиксом в качестве аргумента и увеличивает этот суффикс?
  • Не удается заставить оператор AND работать в сценарии bash
  • Хранить задержанный вывод оболочки в переменную?
  • Проверка печати / перекрестная метка в сценарии оболочки
  • Linux и Unix - лучшая ОС в мире.