Указание пути в linux - PullRequest
       0

Указание пути в linux

1 голос
/ 29 апреля 2020

Я изучаю сценарии оболочки и создал сценарий. В сценарии я назначил вывод команды find переменной в моем коде. Но рецензент отметил, что «пути нужно заключать в кавычки, так как они содержат переменные, которые должны быть расширены». Я не получаю это.

MAIN_PROFILE="$(find /Users/$CURRENT_USER/Library/Group\ Containers/*.Office -type d -name "Main Profile")"

1 Ответ

2 голосов
/ 29 апреля 2020

Вы могли бы процитировать $CURRENT_USER следующим образом:

MAIN_PROFILE="$(find /Users/"$CURRENT_USER"/Library/Group\ Containers/*.Office -type d -name "Main Profile")"

Это нужно сделать, чтобы предотвратить расщепление слов или сбои (см. https://github.com/koalaman/shellcheck/wiki/SC2086)

Например, с помощью сценария, подобного следующему:

#!/bin/bash
USER="jean claude"
find /home/"$USER"/ -type d -name "test"

Он будет отлично работать.

Но если вы его цитируете:

find: ‘/home/jean’: No such file or directory
find: ‘claude/’: No such file or directory

Вы также можете указать полный путь как сказал ваш рецензент, вам не придется выходить из пробелов:

MAIN_PROFILE="$(find "/Users/$CURRENT_USER/Library/Group Containers/"*.Office -type d -name "Main Profile")"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...