Синтаксическая ошибка при проверке существования файла.

Вы можете установить GNU coreutils на macOS, чтобы получить GNU ls. Есть несколько способов сделать это, включая использование HomeBrew, MacPorts, Fink или pkgsrc NetBSD. Некоторые из них могут устанавливать утилиты GNU с префиксом g, чтобы отличить их от утилит базовой системы (, т. е. GNU lsбудет установлен какgls).

Также можно определить простой псевдоним для ls, который просто добавляет флаг -F:

alias ls="ls -F"

Это приведет к тому, что некоторые типы файлов будут аннотироваться символом в конце их имен файлов, например. @для символических ссылок, /для каталогов, *для исполняемых файлов и т. д.

Руководство для lsрасскажет вам больше.

1
27.03.2019, 22:44
1 ответ

Ошибка, которую вы получаете, предполагает, что вы на самом деле запускаете ее через Python.

Какой-то дурак перезаписал ваш двоичный файл bash с помощью python? Попробуйте запустить bash --version.

Пример

[steve@centos ~]$ cat x1
#!/usr/bin/env bash

if [ -f /home/username/hosts ]
then
    rm /home/username/hosts
fi
[steve@centos ~]$./x1
[steve@centos ~]$ python x1
  File "x1", line 3
    if [ -f /home/username/hosts ]
                                 ^
SyntaxError: invalid syntax
[steve@centos ~]$ bash --version
GNU bash, version 4.2.46(2)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

[steve@centos ~]$

Между прочим, я предпочитаю простой rm /home/username/hosts 2>/dev/null, а не if/then/rm/fiподход. то есть попытаться удалить его независимо от того, существует ли он.

5
27.01.2020, 23:15

Теги

Похожие вопросы