2016-12-21 6 views
2

私は、1つのスクリプトだけで外付けドライブから私のホームフォルダを自動的にマウントしたいと思います。私のシステムはUbuntu 16.04です。bash:他のドライブから家にマウントフォルダを自動化

HOMEのフォルダと同じ名前のフォルダが外部ディレクトリに存在するかどうかを確認し、HOMEのフォルダの名前をfoldername_localに変更し、外部ディレクトリのフォルダをHOMEにマウントします。

これは、私がグーグルと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 

は、これまでに動作します。

残念ながら、比較部分は機能せず、私は立ち往生しています。

私はこれを解決するためのアイデアを感謝します。

ソース:[パラメータ展開](http://wiki.bash-hackers.org/syntax/pe#substring_removal)へのヒントについて
How do I check if a variable exists in a list in BASH
Listing only directories in UNIX

答えて

0
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 
+0

おかげ –

+0

残念ながら、私が得ます10行目:[:missing '] 'のみで動作しません。 1行目は[-d $ item]行です。 –

+0

申し訳ありませんまだ自分のコメントを編集できません。エラーは10行目を参照しています:[-d $ item] && .... –

関連する問題