Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
bash:自动将文件夹从其他驱动器装载到主驱动器_Bash_Compare_Ubuntu 16.04_Home Directory - Fatal编程技术网

bash:自动将文件夹从其他驱动器装载到主驱动器

bash:自动将文件夹从其他驱动器装载到主驱动器,bash,compare,ubuntu-16.04,home-directory,Bash,Compare,Ubuntu 16.04,Home Directory,我想用一个脚本从外部驱动器自动装入我的主文件夹。我的系统是Ubuntu 16.04 我想检查外部目录中是否存在与主目录中的文件夹同名的文件夹,然后将主目录中的文件夹重命名为foldername_local并在主目录中装入外部目录文件夹 这是我在谷歌和stackoverflow的帮助下取得的成绩: REMOTE=/path/to/remote/location #create a list of external folders rLIST=$(find $REMOTE -maxdept

我想用一个脚本从外部驱动器自动装入我的主文件夹。我的系统是Ubuntu 16.04

我想检查外部目录中是否存在与主目录中的文件夹同名的文件夹,然后将主目录中的文件夹重命名为foldername_local并在主目录中装入外部目录文件夹

这是我在谷歌和stackoverflow的帮助下取得的成绩:

REMOTE=/path/to/remote/location

#create a list of external folders    
rLIST=$(find $REMOTE -maxdepth 1 -type d -name [^\.]\* -printf '%f\n'| sed 's:^\./::')

#create a list of folders in HOME
hLIST=$(find $HOME -maxdepth 1 -type d -name [^\.]\* -printf '%f\n'| sed 's:^\./::')

#declare comparison function
contains() {
[[ $1 =~ (^|[[:space:]])$2($|[[:space:]]) ]] && exit(0) || exit(1)
} 

for item  in "$rLIST"; do 

 if contains hLIST item 
  then 
 #rename folder and mount external drive fodlers
 mv $HOME$item $HOME$item_local
 mount --bind $REMOTE$item $HOME$item
  else
 continue
fi

done
到目前为止,创建文件夹名称列表仍然有效

不幸的是,比较部分不起作用,我被卡住了

我很欣赏任何关于如何解决这个问题的想法

资料来源:


感谢您对[parameter expansion]()的提示,不幸的是,我只得到了第10行:[:missing`],它不起作用。第1行是[-d$item]-行。对不起,我还不能编辑我自己的内容。错误出现在第10行:[-d$item]&&…我得到了一个小错误:-)它的[-d/home/USER/$dir]谢谢@Ipor Sircer,检查这两个文件夹是个好主意。您还可以为/HOME/USER/$dir编写$HOME/$dir
for item in /path/to/remote/location/*; do 
     dir=${item##*/}
     [ -d $item ] && [ -d /home/$dir ] && mv /home/$dir /home/${dir}_local && mkdir /home/$dir && mount --bind $item /home/$dir
done