7

perl スクリプトでコードを試していますが、bash で別のファイルを呼び出す必要があります。わからない、それを行うための最良の方法はどれですか?system() を使用して直接呼び出すことはできますか? サンプルの方法を案内/見せてください。

私がこれまでに試したことから:

     #!/usr/bin/perl
     system("bash bashscript.sh");

バッシュ:

#!/bin/bash
echo "cdto codespace ..."
cd codetest
rm -rf cts
for sufix in a o exe ; do
echo ${sufix}
find . -depth -type f -name "*.${sufix}" -exec rm -f {} \;
done

Perl スクリプトを実行するとエラーが発生します: No such file or directory codetest

予期しないトークン付近の構文エラー `do

4

4 に答える 4

11

スクリプトを実行したいだけの場合は、バックティックまたはシステムを使用できます。

$result = `/bin/bash /path/to/script`;

また

system("/bin/bash /path/to/script");

スクリプトがバグ量のデータを生成する場合、スクリプトを実行する最良の方法は、open+pipeを使用することです。

if open(PIPE, "/bin/bash /path/to/script|") {
  while(<PIPE>){
  }
}
else {
  # can't run the script
  die "Can't run the script: $!";
}
于 2012-07-24T18:12:50.223 に答える
1

バックティックを使用してコマンドを実行できます。

$command = `command arg1 arg2`;

system("command arg1 arg2")それらを実行することを含む、他のいくつかの追加の方法があります。

ここに良いオンラインリファレンスがあります:http://www.perlhowto.com/executing_external_commands

于 2012-07-24T18:08:29.113 に答える
1

backticks、system()、またはexecを使用できます。

  system("myscript.sh") == 0
    or die "Bash Script failed";

参照:この投稿。

于 2012-07-24T18:09:59.677 に答える
1

なぜ bash シェル スクリプトで "cd" が機能しないのですか?に従って、最初の問題を解決 しました。:

alias proj="cd /home/tree/projects/java"

(@Greg Hewgill に感謝)

于 2012-07-24T21:51:51.867 に答える