我有一个小的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
非常感谢,
汤姆
答案 0 :(得分:0)
以下是如何在脚本中使用参数,我将调用Foo.sh
。
#!/bin/bash
pushd "$1"
... Do rest of stuff
popd
当您调用脚本时,您会说:
./Foo.sh my/path/goes/here
如果您想将参数从文件中提取出来,让我们说是Bar.txt
,您可以将head
与xargs
一起使用。
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