如何创建使用变量执行大量命令的命令行(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")
。