Как избежать Нет такого файла или каталога в linux - PullRequest
1 голос
/ 12 марта 2020

Я пытаюсь выполнить chmod в файл. Иногда этого не существует. В таком случае я хочу, чтобы это не выдавало никакой ошибки. Это означает, что chmod должен выполняться только, если файл существует.

Я делаю это с gitlab-runner, но все же он выполняет сценарии shell, так что это что-то исправляется со стороны linux, а не gitlab

Вот что я пытаюсь сделать

ssh-publickey:
  stage: ssh-publickey
  script: 
    - pwd
    - mkdir -p ~/.ssh
    - chmod 700 ~/.ssh # i want to check before executing this command
    - sudo chmod 700 ~/.ssh/gitlab.pem
    - echo $PRIVATEKEY > ~/.ssh/gitlab.pem

Ответы [ 2 ]

0 голосов
/ 12 марта 2020

Вы также можете заключить команду chmod в оператор if, чтобы проверить, существует ли файл / каталог перед его запуском:

if [-d ~ / .s sh]; затем chmod 0700 ~ / .s sh; фи

0 голосов
/ 12 марта 2020

Вы можете использовать флаг chmod -f , чтобы игнорировать ошибки, т.е. не печатать сообщение об ошибке, если файл не существует. Однако команда все равно будет иметь статус выхода 1 , поскольку она не нашла файл. Если вы хотите избежать этого и всегда получать код состояния 0 , даже если файл не существует, вы можете сделать следующее:

chmod -f 700 ~/.ssh | :

":" - это linux нулевая команда, которая завершится с кодом 0.

...