bash脚本中的Glob模式
我正在编写一个bash脚本,将一些点文件从bash脚本中的Glob模式,bash,glob,Bash,Glob,我正在编写一个bash脚本,将一些点文件从~/.dotfiles链接到~ 我的整个脚本如下: declare -a dotfiles=( bashrc git/.gitconfig extra/* ) for dotfile in "${dotfiles[@]}"; do orig_df="$HOME/.dotfiles/$dotfile" home_df="null" # Add a dot before the name of the f
~/.dotfiles
链接到~
我的整个脚本如下:
declare -a dotfiles=(
bashrc
git/.gitconfig
extra/*
)
for dotfile in "${dotfiles[@]}"; do
orig_df="$HOME/.dotfiles/$dotfile"
home_df="null"
# Add a dot before the name of the file if it hasn't one already
if [[ `basename "$orig_df"` == .* ]]; then
home_df="$HOME/`basename $dotfile`"
else
home_df="$HOME/.`basename $dotfile`"
fi
# Link
ln -s "$orig_df" "$home_df"
done
除了(猜猜看)在extra/*
中的globbing外,其他一切都正常
我如何扩展它?到目前为止,它创建了如下链接:
~/.* # linked to -> ~/.dotfiles/extra/*
(因为我告诉它在没有点的情况下加前缀)。在分配变量时,通配符应该展开,除非它与任何内容都不匹配。什么变量<代码>点文件或
源文件
?因为当它第一次看到dotfiles
时,它不知道我在说什么extra/
目录。extra/*
将在您分配dotfiles
时相对于当前目录展开,因为您没有将glob放在引号中。如果省略分配给orig_df
的引号,则会展开通配符。