1

вопрос состоит в том, как использовать две переменные вместе.

ех. $ 1, $ 2, $ 3 установлены

numb=2 

Мне нужно использовать команду:

head $$numb

это должно быть так же, как:

head $2

Я перепробовал все, мне нужно знать, что нужно положить между $ и $numb так что вывод показывает мне 10 первых строк по $2

как head $"$numb" или head $'\$numb\'

но это не работает

2 ответа2

1

Я думаю, что вы ищете что-то вроде этого:

#!/bin/env/bash

files=$1

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

Затем вы запускаете скрипт с файлом, содержащим имена файлов (по одному на строку) в качестве аргумента:

./foo.sh files.txt

Цикл , while сохраняет каждое имя файла из files.txt как $name , а затем запускает head на него.

1

Не читая все ваши комментарии, я отвечаю только на ваш начальный вопрос.

В bash оператор для косвенной косвенности есть ! посмотрите этот простой пример скрипта foo:

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

В качестве примечания: в (моя любимая оболочка) zsh вы можете использовать флаг расширения параметров P чтобы получить этот результат

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

Но вы также можете использовать другой подход, третья строка может также читать echo "${@[$bar]}" . Здесь вы можете думать о "$@" как о массиве "$1" "$2" "$3" ... , следовательно, "${@[2]}" эквивалентно "$2" .

Однако оба сценария foo дают одинаковый результат:

$ ./foo one two three
two

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .