带空格的bash复制问题
我正在尝试创建备份脚本,但在尝试复制时无法让inte以正确的方式处理空白。我到处都找了,但找不到有效的解决方案。问题是,当它试图复制文件“testwhitespaces”时,它会将其解释为不同的文件。我的代码如下所示:带空格的bash复制问题,bash,Bash,我正在尝试创建备份脚本,但在尝试复制时无法让inte以正确的方式处理空白。我到处都找了,但找不到有效的解决方案。问题是,当它试图复制文件“testwhitespaces”时,它会将其解释为不同的文件。我的代码如下所示: #!/bin/bash cd /var/backup number_of_files=$(ls |wc -l) while [ $number_of_files -gt 9 ] do ls -t | tail -n -1 | xargs rm -rf number_o
#!/bin/bash
cd /var/backup
number_of_files=$(ls |wc -l)
while [ $number_of_files -gt 9 ]
do
ls -t | tail -n -1 | xargs rm -rf
number_of_files=$(( $number_of_files -1 ))
done
mkdir temp
cd temp
number_of_home=$( ls / | grep home | wc -l)
i=1
while [ $i -lt $number_of_home ]
do
user=$(ls -l $(find /home$i -iname .backuprc) | cut -d ' ' -f 3)
mkdir $user
for file in "$(find /home$i -iname .backuprc -exec cat {} \; );"
do
cp "$file" /var/backup/temp/$user;
done
i=$(( $i + 1 ))
done
cd /var/backup
tar -czf $( date '+%k.%M.%S_%m%d%y').tar temp
rm -r /var/backup/temp
尝试将
IFS=$'\n'
添加到脚本的开头。这将导致空间不被视为字段分隔符
for file in "$(find /home$i -iname .backuprc -exec cat {} \;);"
do
cp "$file" /var/backup/temp/$user;
done
切换到:
find /home$i -iname .backuprc -exec cat {} \; | while read file; do
cp "$file" /var/backup/temp/$user;
done
或:
这是一个相当激进的选择。打断其他行的可能性很大。这是一个脚本,因此它只影响脚本。如果脚本中还有其他行需要另一个值,请重新设置。
find /home$i -iname .backuprc -exec cat {} \; | xargs -d '\n' cp -t /var/backup/temp/$user