下面我有一个Perl脚本,我想将其转换为一个bash脚本,但伤心地说,我有Bash中的困难。任何人都可以帮助我。
#!/usr/bin/perl
use strict;
use warnings;
my $output = `df -h`;
my $bundle = "`awk -F \'=\' \'{print \$2}\' config.txt`";
my $bundlename = `echo $bundle | awk -F \'/\' \'{print \$11}\'`;
print $output;
system ("wget $bundle");
print "$bundlename\n";
tar();
sub tar {
my $cd = system ("tar -xzvf $bundlename") ;
system ("rm -vf $bundlename");
}
任何人都可以将其转换为Bash脚本吗?
答案 0 :(得分:2)
#!/bin/sh
bundle=$(awk '$0=$2' FS== config.txt)
bundlename=$(awk '$0=$11' FS=/ <<< "$bundle")
dh -h
wget $bundle
echo $bundlename
tar -xzvf $bundlename
rm -vf $bundlename
答案 1 :(得分:1)
这是一个非常直接的Perl直接音译:
#!/bin/bash
output=$(df -h)
bundle=$(awk -F = '{print $2}' config.txt)
bundlename=$(echo $bundle | awk -F / '{print $11}') # Possible echo "$bundle" instead?
echo "$output"
wget $bundle
echo "$bundlename"
tar -xzvf "$bundlename"
rm -vf "$bundlename"
鉴于您对$output
变量的处理方式,您可以简单地写一下:
bundle=$(awk -F = '{print $2}' config.txt)
bundlename=$(echo $bundle | awk -F / '{print $11}') # Possible echo "$bundle" instead?
df -h
wget $bundle
echo "$bundlename"
tar -xzvf "$bundlename"
rm -vf "$bundlename"
不清楚df -h
是否为脚本带来任何好处;你可能只是删除该行。