У меня есть следующая команда, которая работает хорошо, но я хотел бы включить дальнейшую переменную так или иначе:
#!/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
Просто не полностью уверенный, как достигнуть этого.
Можно использовать два 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
Если Вы подразумеваете, что хотите протестировать оба использования переменных & & оператор и другой тест
until [ $x -eq 180000" ] && [ $y -eq 9999 ]; do