在shell脚本中使用参数

时间:2014-04-28 08:53:16

标签: shell unix parameters

我有一个小的shell脚本,它转到指定的文件夹并提取该文件夹中的.tar个文件。

现在,我必须使用参数来更改文件夹的路径。 我脚本中的第一行是cd /bla/bla/bla。 我想从单独的文件中读取/bla/bla/bla部分。在该文件中,第一行是PATH= /bla/bla/bla

任何人都有我的建议吗?

我实现了Merlin的解决方案,但脚本进入循环。

我的代码是:

cd head -n 1 PARAM.TXT | awk -F'=' '{print $2}' | xargs ./pctrl_ExtractAndRemoveTar.sh;
for file in *.tar.gz; 
  do tmp=${file:34} && b=${tmp%.tar.gz*} && tar tfz "${file}" > "${b}.fl" && tar xzvf "${file}" && rm "${file}"; 
done

非常感谢,

汤姆

1 个答案:

答案 0 :(得分:0)

以下是如何在脚本中使用参数,我将调用Foo.sh

#!/bin/bash

pushd "$1" 
... Do rest of stuff
popd

当您调用脚本时,您会说:

./Foo.sh my/path/goes/here

如果您想将参数从文件中提取出来,让我们说是Bar.txt,您可以将headxargs一起使用。

head -n 1 Bar.txt | xargs ./Foo.sh

请注意,上面的行假设Bar.txt的第一行与路径完全相同。 如果您使用varname=the/path的格式,则可以使用awk获取作业的正确部分。

head -n 1 Bar.txt | awk -F'=' '{print $2}' | xargs ./Foo.sh

更新:如果我正在正确阅读他的代码,OP似乎在无限循环中调用自己的脚本。由于您似乎想要将PARAM.txt硬编码到您的脚本中,这可能就是您想要的。

cd `head -n 1 PARAM.TXT | awk -F'=' '{print $2}'`
for file in *.tar.gz; 
  do tmp=${file:34} && b=${tmp%.tar.gz*} && tar tfz "${file}" > "${b}.fl" && tar xzvf "${file}" && rm "${file}"; 
done