如何在 Linux 中使用 2x$$

如何在 Linux 中使用 2x$$

问题是如何一起使用两个变量。

前任。 $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.txtas $name,然后head在其上运行。

相关内容