如何创建使用变量来执行大量命令的命令行 (unix/linux) 指令?
-
09-06-2019 - |
题
我需要重新排列各个目录中的一些内容,但这有点痛苦。为了调试我正在开发的应用程序(一个 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") 它为我填补了空白?
解决方案
将以下内容放入名为 gemmove 的文件中:
#!/bin/bash
foo=$1
if [ x$foo == 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 gemmove foo' 将 foo gem 从备份目录移动到真实目录中
其他提示
您可以简单地使用 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
在 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")
脚本中的其他地方。
不隶属于 StackOverflow