Como usar 2x $$ juntos linux

1

a questing é como usar duas variáveis juntas ...

ex. $ 1, $ 2, $ 3 estão definidos

numb=2 

Eu preciso usar o comando:

head $$numb

que deve ser o mesmo que:

head $2

Eu tentei de tudo, eu preciso saber o que colocar entre $ e $numb , então a saída mostra as 10 primeiras linhas de $2

como head $"$numb" ou head $'\$numb\'

mas não funciona.

    
por Denis 13.10.2013 / 18:57

2 respostas

1

Sem ler todos os seus comentários, respondo apenas à sua pergunta inicial.

Em bash , o operador para a indirecção de variáveis é ! , consulte este exemplo simples de script foo :

#!/bin/bash
bar=2
echo "${!bar}"

Como uma nota secundária: Em (meu shell favorito) zsh , você pode usar o Sinalizador de Expansão do Parâmetro P para obter este resultado

#!/bin/zsh
bar=2
echo "${(P)bar}"

Mas você também pode usar uma abordagem diferente, a terceira linha também pode ler echo "${@[$bar]}" . Aqui você pode pensar em "$@" como uma matriz de "$1" "$2" "$3" ... , portanto, "${@[2]}" é equivalente a "$2" .

No entanto, os dois scripts foo produzem o mesmo resultado:

$ ./foo one two three
two
    
por 13.10.2013 / 21:50
1

Acho que você está procurando algo assim:

#!/bin/env/bash

files=$1

while IFS= read -r name;
do
  head "$name";
done < "$files"

Em seguida, você executa o script com o arquivo que contém os nomes de arquivo de interesse (um por linha) como argumento:

./foo.sh files.txt

O loop while salva cada nome de arquivo de files.txt como $name e, em seguida, executa head .

    
por 13.10.2013 / 19:41