【问题标题】:How to create system variables initialized by separate line of input如何创建由单独的输入行初始化的系统变量
【发布时间】:2012-03-25 21:44:43
【问题描述】:

我有一个文件列表,例如由find . -name file.* 给出的

./file.a
./dir1/dir2/file.b
./dir1/dir3/file.c
./file.d
./file.e

...

如何自动创建变量作为休闲:

F1=./file.a
F2=./dir1/dir2/file.b
F3=./dir1/dir3/file.c
F4=./file.d
F5=./file.e

...

我想 sed/awk/xargs 的一些巧妙组合可以完成这项工作。

你能帮帮我吗?

【问题讨论】:

  • F1=../../file.a F2=../dir1/dir2/file.b F3=../dir1/dir3/file.c F4=./file.d F5=./file.e 的逻辑是什么,我的意思是,你如何得到一个 ../../ 和另一个 ./
  • 那么 kev 有你的答案。

标签: linux bash sed awk xargs


【解决方案1】:
$ F=(`find . -name 'file.*'`)
$ for((i=1;i<=${#F};i++)); do eval "F$i='${F[$i]}'"; done

【讨论】:

  • +1。将破坏任何带有空格的文件,但又美观又紧凑。
【解决方案2】:

perl -e "@files = qx(find . -name file.*);"

【讨论】:

  • 也许最好的方法是:perl -e "map{FooFunction($_);}qx(find . -name file.*);"
【解决方案3】:

这可能对你有用:

find . -name 'file.*' | sed = | sed 'N;s/^\(.*\)\n/F\1=/' >/tmp/source
. /tmp/source

【讨论】:

  • oo sed 比 perl 更难理解 :)
猜你喜欢
  • 2016-09-13
  • 2019-07-26
  • 1970-01-01
  • 2012-07-17
  • 2020-12-31
  • 1970-01-01
  • 1970-01-01
  • 2012-11-13
  • 2011-01-16
相关资源
最近更新 更多