我的shell脚本如何操作不同文件夹中的文件?

时间:2011-12-11 17:56:36

标签: linux bash shell

我有两个文件夹,A和B.在文件夹A中,我有一个数据文件。在文件夹B中,我有程序文件。我希望文件夹B中的程序对文件夹A中的文件进行操作,从文件夹B运行。

我能想到的唯一方法是将文件从A移动到B的脚本,从文件夹B运行命令,然后将输出文件从B移回A.无论如何,我可以将文件保存在文件夹A中并从B运行程序

这是我的脚本。它非常混乱,我认为应该采用更清洁的方式。

echo "Signing with test keys....";
     mv *.apk $HOME/signapk/files/not_signed.apk;
     cd $HOME/signapk/files;
     java -jar signapk.jar testkey.x509.pem testkey.pk8 not_signed.apk signed_apk.apk;
     mv not_signed.apk $HOME/signapk/original.apk;
     mv signed_apk.apk $HOME/signapk/test_signed.apk;;
  2) echo "Signing with private keys....";
     mv *.apk $HOME/signapk/files/not_signed.apk;
     cd $HOME/signapk/files;
     java -jar signapk.jar certificate.pem key.pk8 not_signed.apk signed_apk.apk;
         mv not_signed.apk $HOME/signapk/original.apk;
     mv signed_apk.apk /$HOME/signapk/private_signed.apk;;
  3) echo "Press enter to contintue with zipaligning";
     read ;
     mv *.apk $HOME/signapk/files/zipalign.apk;
     cd $HOME/signapk/files;
     ./zipalign -v -f 4 zipalign.apk zipaligned.apk;
     mv zipaligned.apk $HOME/signapk/zipaligned;
     mv zipalign.apk $HOME/signapk/original.apk;;

2 个答案:

答案 0 :(得分:1)

您是否考虑使用symbolic links - 从您的临时目录B到{ - 3}}命令的其他目录A-?

所以你可以先创建一个新的空目录

mydir=$(mktemp -d)

请你的shell在退出时清理它

trap "rm -rf $mydir" EXIT

然后你可以用符号链接填充它

ln -s *.apk $mydir

最后在那里运行你的程序

cd $mydir
yourprog *.apk

等。随意适应您的需求。

答案 1 :(得分:0)

我明白了!您所要做的就是将路径附加到文件中。 因此:

java -jar signapk.jar nameof.apk

变为:

java -jar ./path/to/signapk.jar nameof.apk