Intereting Posts
Как выполнить загрузку альтернативных ядер, показанных в меню верхнего уровня GRUB? как игнорировать ошибку MySql и перейти к следующему запросу? Есть ли более быстрый способ удалить строку (учитывая номер строки) из файла? Запуск сценариев компиляции только в том случае, если исходный файл более поздний, чем скомпилированная программа PACEMAKER ON CENTOS 7 Виртуальная проблема IP Я больше не могу получить доступ к учетной записи root: пользователь не находится в файле sudoers Почему .bash_profile не может установить переменную PS1? узнайте, какой интерфейс я использую Как прокомментировать несколько строк одновременно? Запуск NetworkManager перед gdm.service с помощью systemd Как объявить данные R CSV как числовые? Порядок аргументов командной строки Сортировка в обратном числовом порядке на подполе в многополевой сортировке Вложенные циклы, если условия и фоновые задания в bash Как установить Adobe Reader 11.x на Mint 18 x64 (Ubuntu 16.04) с помощью Wine 1.8

арифметическая синтаксическая ошибка в сравнении строк

Я написал сценарий оболочки, который принимает имя файла как параметр, например user / test.txt. Я хочу, чтобы этот параметр файла был необязательным, если пользователь не хочет предоставлять имя файла, которое он может дать как «Нет»,

Внутри сценария я просто проверяю, содержит ли параметр имени файла «None»

if [ $filename -eq "NONE" ];then cmd; fi 

Когда «None» передается, поскольку скрипт параметров работает нормально, но когда пользователь / test.txt передается, я получаю ниже сообщение об ошибке, которое я не хочу печатать на консоли

 arithmetic syntax error 

Может ли кто-нибудь помочь?

[ bla bla bla ] эквивалентен test bla bla bla .

Из man test

  STRING1 = STRING2 the strings are equal STRING1 != STRING2 the strings are not equal INTEGER1 -eq INTEGER2 INTEGER1 is equal to INTEGER2 

Поэтому вам нужно = not -eq .