我正在嘗試編寫腳本(混合使用perl和bash)來解壓縮文件。使用變量在perl/bash中存儲命令行
unzip命令是用戶特定的(取決於文件),因此用戶需要輸入命令的開頭,然後將其存儲在名爲$ unzipCommand(perl)的變量中。例如,用戶可以輸入'gunzip'或'gunzip'。例如:
my $unzipCommand = "gunzip";
這個變量是可以訪問和運行的,例如,我可以將它打印到屏幕上。但是,我想用它來構建一個存儲在.sh文件中的命令行。
我試過各種方法來做到這一點,但似乎沒有任何工作。 臨屋變量是這樣的:
my $cmd = "$unzipCommand $path2zippedfile > $path2file";
並將其存儲在一個shell腳本,我曾嘗試:
`echo "$cmd" > $sh_script`;
和
open $sh_script, ">", "$QSUB" or die "Can't open '$QSUB'";
print $sh_script "$cmd";
close $sh_script;
它似乎總是命令是「執行'而不是打印在文件中。
我知道命令的工作原理是因爲如果我硬編碼'gunzip',我不會得到這個錯誤。
任何幫助將不勝感激。 謝謝!
開啓調試功能,查看引用級別(dbl-quote vs back quotes vs vs single quotes)中的變量 - >值是否可見。祝你好運。 – shellter
什麼'print「$ cmd」;'(Perl)給你? – thonnor