Если Вам на самом деле настроили RAID через аппаратные средства (т.е. операционная система видит, что меньше физических дисков, чем Вы на самом деле имеет), нет никаких аппаратных средств к методу преобразования программного обеспечения. Необходимо создать резервную копию данных к альтернативному местоположению, преобразовать RAID вручную и восстановление.
В порядке от худшего к лучшему:
DIRNAME="$(dirname $FILE)"
не будет делать то, что вы хотите[11820], если [11821]$FILE[11822] содержит пробелы или глобусные символы [11823]\[?*[11824].
DIRNAME=`dirname "$FILE"`[11826] технически верно, но [11827]backticks не рекомендуется для расширения команд[11828] из-за дополнительной сложности при их вложении.
DIRNAME=$(dirname "$FILE")[11830] верно, но [11831] только потому, что это присваивание[11832]. Если вы используете подстановку команд в любом другом контексте, например, [11833]export DIRNAME=$(имя "$FILE")[11834] или [11835]du $(имя "$FILE")[11836], то отсутствие кавычек вызовет проблемы, если результат расширения будет содержать пробелы или глобусные символы.
Для еще большего улучшения:
DIRNAME="$(dirname -- "$FILE")"[11844] работает, если [11845]$FILE[11846] начинается с тире.DIRNAME="$(dirname -- "$FILE"; printf x)" && DIRNAME="${DIRNAME%?x}"[11848] работает, даже если [11849]$FILE[11850] заканчивается новой строкой, так как [11851]$()[11852] отсекает новые строки в конце вывода и [11853]dirname[11854] выводит новую строку после результата. Sheesh [11855]dirname[11856], почему вы должны быть другими?
sudo apt-get install git build-essential
sudo sudo apt-get build-dep emacs
git clone git://github.com/emacsmirror/emacs
cd emacs
./autogen.sh &> log.autogen
./configure &> log.configure
make bootstrap &> log.bootstrap
sudo make install &> log.install
Вы можете вставлять расширения команд сколько угодно. С помощью $() вы всегда создаете новый контекст кавычек, так что вы можете делать такие вещи:
Вы делаете не, чтобы попробовать это с обратными стиками.
Эффект цитирования переменных всегда можно показать с помощью printf
Разделение слова на
цитируется, поэтому никакого разделения слова:
Разделение слова на
var1 внутри
$(), эквивалентно
echo "hello" "world":
[Automount]
Where=/mnt/backup1
[Install]
WantedBy=remote-fs.target
Нет разделения слов на
var1, нет проблемы не цитировать
$():
Разделение слов на
var1 снова:
net stop "audiosrv"
Цитирование обоих, самый простой способ быть уверенным.
net start "audiosrv"
Проблема глобуса
Не цитирование переменной также может привести к глобусному расширению ее содержимого:
Обратите внимание, что это происходит только после того, как переменная будет расширена. Нет необходимости цитировать глобус во время присваивания:Используйте
, чтобы отключить это поведение:
И множество +f, чтобы снова включить его:
$ stty intr ^C^J
Дополнение к принятому ответу:
, в то время как я обычно согласен с ответом @ l0b0's revact здесь, я подозреваю, что размещение голых блин в списке «худший к лучшему», по крайней мере, частично результатом Предположение, которое $ (...)
доступно везде. Я понимаю, что вопрос указывает Bash, но есть много раз, когда Bash оказывается в виду / bin / sh
, что может не всегда быть полным бурном снова оболочкой.
В частности, равнинная раковина Bourne не узнает, что делать с $ (...)
, поэтому скрипты, которые утверждают, что будут совместимы с ним (например, через #! / BIN / SH
SHIBANG LINE), скорее всего, плохо себя ведет, если бы они на самом деле управляют «настоящим» / bin / sh
- это особый интерес, когда, скажем, создавая скрипты init или упаковку до - и посткрипты, а могут приземлиться в удивительном месте во время установки базовой системы.
Если кто-то из этого звучит как то, что вы планируете делать с этой переменной, вложение, вероятно, меньше интересного, чем на фактически проведении сценария, предсказуемого. Когда это просто достаточно простой случай, и переносимость - это беспокойство, даже если я ожидаю, что скрипт обычно работает на системах, где / bin / sh
- это bash, я часто склонен использовать образец для По этой причине с несколькими заданиями вместо вложенности.
Сказав все это, повсеместность оболочек, которые реализуют $ (...)
(bash, dash, et al.), Оставляет нас в хорошем месте, чтобы придерживаться красивее, проще Гнездо, и недавно предпочтительный синтаксис POSIX в большинстве случаев по всем причинам @ l0b0 упоминается.
В сторону: это иногда показало время в Stackoverflow -