Добавление дальнейшей переменной к до команды

У меня есть следующая команда, которая работает хорошо, но я хотел бы включить дальнейшую переменную так или иначе:

#!/bin/bash
x=40000
until [ $x = "180000" ]; do
        dd bs=1 if=static.file of=extracted${x}.file skip=12345 count=$x;
        first_ten=$(hexdump -e '1/1 "%.2X"' "extracted${x}.file" | head -c 10);
                if [ "$first_ten" == "1234567890" ]
                then
                echo "${x}" >> correct.txt;
                fi;
        rm extracted${x}.file;
    ((x++))
done

Я хотел бы добавить в возрастающей переменной к разделу пропуска поэтому, после того как он завершил 'x' переменную, чтобы затем увеличить (пропуск) 'y' переменную 1 и запустить процесс.

#!/bin/bash
y=12345
x=40000
until [ $x = "180000" ]; do
        dd bs=1 if=static.file of=extracted${x}.file skip=$x count=$x;
        first_ten=$(hexdump -e '1/1 "%.2X"' "extracted${x}.file" | head -c 10);
                if [ "$first_ten" == "1234567890" ]
                then
                echo "${y}_${x}" >> correct.txt;
                fi;
        rm extracted${x}.file;
    ((x++))
done

Просто не полностью уверенный, как достигнуть этого.

0
задан 25 January 2016 в 06:11

2 ответа

Можно использовать два for циклы т.е. один для y и один для x (или while / until в y цикл т.е. внешний цикл):

#!/bin/bash 
for ((y=0; y<12345; y++)); do
    for ((x=40000; x<180000; x++)); do
        dd bs=1 if=static.file of=extracted${x}.file skip=12345 count=$x;
        first_ten=$(hexdump -e '1/1 "%.2X"' "extracted${x}.file" | head -c 10);
                if [ "$first_ten" == "1234567890" ]
                then
                echo "${x}" >> correct.txt;
                fi;
        rm extracted${x}.file;
    done
done

Изменение значения для удовлетворения потребностей.

Пример:

% cat scr.sh 
#!/bin/bash
for ((y=0; y<=3; y++)); do
    for ((x=0; x<=2; x++)); do
        echo "This is $x : $y"
    done
done

% ./scr.sh  
This is 0 : 0
This is 1 : 0
This is 2 : 0
This is 0 : 1
This is 1 : 1
This is 2 : 1
This is 0 : 2
This is 1 : 2
This is 2 : 2
This is 0 : 3
This is 1 : 3
This is 2 : 3
1
ответ дан 26 July 2019 в 08:58

Если Вы подразумеваете, что хотите протестировать оба использования переменных & & оператор и другой тест

until [ $x  -eq 180000" ] && [ $y -eq  9999 ]; do
1
ответ дан 26 July 2019 в 08:58

Другие вопросы по тегам:

Похожие вопросы: