編集済み*
私のBashスクリプトには次の定義があります。
DATE_SUFIX=$(date +%F_%H-%M-%S)
NAME="MyBackup_"
FILE_NAME=$NAME$DATE_SUFIX
TMP_DIR="/tmp/"
TMP_BKP=$TMP_DIR$NOME_ARQ"/"
TAR_CMD="tar czPf "
次のディレクトリリストを作成します。
FOLDER_LIST[0]="/opt"
FOLDER_LIST[1]="/etc/apache2/sites-available"
FOLDER_LIST[2]="/home/user"
次に、このループを使用してこのリストを繰り返します。
mkdir $TMP_BKP
for ix in ${!FOLDER_LIST[*]}
do
CMD=$TAR_CMD$TMP_BKP$(basename ${FOLDER_LIST[$ix]})".tar.gz "${FOLDER_LIST[$ix]}"/* "$EXCLUDE
echo $CMD
done
$EXCLUDE 部分を生成するコードもあります。私もそうします。ただし、この質問に対するコードの関連部分は、次"${FOLDER_LIST[$ix]}"/*
のように拡張されるCMD部分です。
"/home/user/mybackupfolder/foo /home/user/mybackupfolder/bar ..."
問題は、拡張サブフォルダの1つにスペースがあることです。これにより、以下が生成されます。
"/home/user/mybackupfolder/foo /home/user/mybackupfolder/bar /home/user/mybackupfolder/my spaced dir"
これにより、次の操作が中断されます。これをどのように拡張できますか? -
"'/home/user/mybackupfolder/foo' '/home/user/mybackupfolder/bar' '/home/user/mybackupfolder/my spaced dir'"
答え1
(コメントスレッドで選択した回答)
見積もりが欠落しているか、正しく適用されていないようです。文字列に引用符を入れて、シェルに結果を引用符付き文字列として解釈させることはできません。
読んでください。BashFAQ#50:コマンドを変数に入れようとしていますが、複雑な場合は常に失敗します!役立つことを確認してください。