В сценарии bash, как использовать переменную внутри команды и назначить ее новой переменной?

Вы можете попробовать chattr + i , установить владельца сценария как root и дать ему права на чтение / выполнение.

После установки этого флага для сценария только root сможет редактировать его (после выполнения chattr -i )

Более подробную информацию можно найти здесь: http://computernetworkingnotes.com/managing-file-system-security/chattr.html

0
18.02.2019, 18:33
1 ответ

Вы ожидаете, что md5прочитает значение переменной backup_dirи вернет ее хеш-сумму MD5.

Конвейер команд

${backup_dir} | md5

попытается запустить $backup_dirкак команду, передав ее вывод в md5. Я бы ожидал от этого ошибки «команда не найдена» вместе с хэшем MD5 пустой строки(d41d8cd98f00b204e9800998ecf8427e$hashed.

Вместо этого вам нужно будет использовать что-то вроде

printf '%s' "$backup_dir" | md5

, чтобы передать md5значение стандартного входного потока.

Вы также можете использовать echo "$backup_dir" | md5или md5 <<<"$backup_dir", но обратите внимание, что это добавляет новую строку в конец значения $backup_dir, что изменит хэш.

Если md5является утилитой md5, обычно используемой в BSD и BSD -подобных системах (, например. macOS ), тогда вам следует использовать

md5 -q -s "$backup_dir"

Опция -sпринимает в качестве аргумента строку, а -qзаставляет md5выводить только хэш этой строки и ничего больше.

Резюме:

#!/bin/bash
backup_dir=$(date +%Y-%m-%d_%H-%M-%S)
hashed=$(md5 -q -s "$backup_dir")
3
28.01.2020, 02:22

Теги

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