Ruby 如何在shell脚本的字符串中插入连字符或破折号?
我有以下代码,这意味着要遍历一个gem列表,并使用Ruby 如何在shell脚本的字符串中插入连字符或破折号?,ruby,shell,escaping,hyphen,quoting,Ruby,Shell,Escaping,Hyphen,Quoting,我有以下代码,这意味着要遍历一个gem列表,并使用gem install$gem安装每个gem。但是,当gem名称包含连字符/破折号时,脚本会将连字符两侧的单词视为两个单独的列表项。如何正确地转义连字符,使列表将其视为一项 # Install gems for all installed versions of ruby source /usr/local/share/chruby/chruby.sh gems=( "bundler" "homesick" "mechanize" "vagr
gem install$gem
安装每个gem。但是,当gem名称包含连字符/破折号时,脚本会将连字符两侧的单词视为两个单独的列表项。如何正确地转义连字符,使列表将其视为一项
# Install gems for all installed versions of ruby
source /usr/local/share/chruby/chruby.sh
gems=(
"bundler"
"homesick"
"mechanize"
"vagrant"
"gist"
"pry"
"awesome_print"
"overcommit"
"rubocop"
"jshint"
"gem-release"
"aws"
"librarian-chef"
"knife-solo"
)
rubies=`chruby`
for ruby in ${rubies[@]}
do
IN="$ruby"
set -- "$IN"
IFS="-"; declare -a Array=($*)
echo "Installing gems for ${Array[1]}"
chruby ${Array[1]}
echo `ruby -v`
for gem in ${gems[@]}
do
echo $gem
if ! gem list $gem -i > /dev/null 2>&1
then
gem install $gem
fi
done
done
我所尝试的:
\e-
-*
gem\055name
echo
,但不适用于gem安装“$gem”
我能做些什么来实现这一点呢?您正在将
IFS
设置为-
在数组
声明之前(但不仅仅针对该声明)。这导致了你的问题。所有这些代码都需要重现你的问题吗?那么解决方案就是OLDIFS=$IFS;如果s='-'<代码>;IFS=$OLDIFS
via