1

我需要重新排列各种目录中的一些内容,但这有点痛苦。为了调试我正在开发的应用程序(一个 ruby​​ 应用程序),我需要一次将一个 gem 移动到我的 gem 文件夹中(长话短说;简而言之:一个坏了,我不知道是哪一个)。

所以我需要做类似的事情:

sudo mv backup/gem/foo gem/
sudo mv backup/doc/foo doc/
sudo mv backup/specification/foo.gemspec specification/

每次替换“foo”。我如何编写一个简单的 shell 脚本来让我执行以下操作: gemMove("foo") 并为我填补空白?

4

3 回答 3

5

将以下内容放入名为 的文件中gemmove

#!/bin/bash

if [ "x$1" == x ]; then
  echo "Must have an arg"
  exit 1
fi

for d in gem doc specification ; do 
  mv "backup/$d/$1" "$d"
done

然后做

chmod a+x gemmove

然后调用sudo /path/to/gemmove foo将 foo gem 从备份目录移动到真实目录

于 2008-09-16T17:39:38.867 回答
1

您可以简单地使用 bash shell 参数,如下所示:

#!/bin/bash
# This is move.sh
mv backup/gem/$1 gem/
mv backup/doc/$1 doc/
# ...

然后将其执行为:

sudo ./move.sh foo

确保使脚本可执行,使用

chmod +x move.sh
于 2008-09-16T17:41:02.887 回答
1

在 bash 中,类似:

function gemMove()
{
filename=$1
   mv backup/gem/$filename gem/$filename
   mv backup/doc/$filename doc/$filename
   mv backup/specification/$filename.spec specification
}

然后你可以gemMove("foo")在脚本的其他地方调用。

于 2008-09-16T17:47:13.560 回答