如何创建使用变量执行大量命令的命令行(unix / linux)指令?

时间:2020-03-05 18:56:38  来源:igfitidea点击:

我需要重新排列各个目录中的某些内容,但这有点麻烦。为了调试我正在处理的应用程序(红宝石应用程序),我需要一次将我的宝石移动到我的gem文件夹中(长话短说;简而言之:一个坏了,我不知道哪一个)。

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

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

每次替换" foo"。如何编写一个简单的Shell脚本让我做类似的事情:gemMove(" foo")并为我填空?

解决方案

回答

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

#!/bin/bash

foo=

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

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

然后做

chmod a+x gemmove

然后调用" sudo gemmove foo"将foo gem从备份目录移到真实目录

回答

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

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

然后将其执行为:

sudo ./move.sh foo

确保使用以下命令使脚本可执行

chmod +x move.sh

回答

在bash中,类似:

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

那么我们可以在脚本的其他位置调用gemMove(" foo")