问题是如何一起使用两个变量。
前任。 $1,$2,$3已设置
numb=2
我需要使用命令:
head $$numb
必须与以下内容相同:
head $2
我尝试了所有方法,我需要知道在中间放什么$
,$numb
所以输出显示了$2
喜欢head $"$numb"
或head $'\$numb\'
但它不起作用。
答案1
在没有阅读您的所有评论的情况下,我仅回答您的最初问题。
在bash
变量间接寻址运算符中!
,请参见这个简单的示例脚本foo
:
#!/bin/bash
bar=2
echo "${!bar}"
附注:在(我最喜欢的 shell)中,zsh
您可以使用参数扩展标志P
得到这个结果
#!/bin/zsh
bar=2
echo "${(P)bar}"
但你也可以使用不同的方法,第三行也可以写成echo "${@[$bar]}"
。这里你可以把 看作"$@"
的数组"$1" "$2" "$3" ...
,因此"${@[2]}"
相当于"$2"
。
但是,两个foo
脚本都会产生相同的结果:
$ ./foo one two three
two
答案2
我认为你正在寻找这样的东西:
#!/bin/env/bash
files=$1
while IFS= read -r name;
do
head "$name";
done < "$files"
然后,使用包含感兴趣的文件名(每行一个)的文件作为参数运行该脚本:
./foo.sh files.txt
循环while
将每个文件名保存为files.txt
as $name
,然后head
在其上运行。