Ucząc się bash, zastanawiałem się, czy jest to możliwe, z przypadkiem, czy z jakąś funkcją.
Na przykład..
./test.sh arg1 -p help,contact -e html,php # don't know how to expand them both
LUB czy można zrobić coś takiego?
./test.sh arg1 -p help -p contact -e html -e php
or
./test.sh arg1 -p help -e html -p contact -e php
Chcę, aby wynik był jak ...
Adres URL to www.google.com/help.html
Adres URL to www.google.com/contact.php
kod:
var1=$1
url="http://www.google.com/"
# maybe use a for loop here??
# Okay now if I use getopts - @Hannu
while getopts ":p:e:" o; do
case "${o}" in
p)
page+=("$OPTARG")
;;
e)
extension+=("$OPTARG")
;;
esac
done
shift $((OPTIND -1))
#I need a better for loop here - which can expand both variables
for val in "${extension[@]}"; #
do
# FAIL - pass first switch arguments -p and -e to for loop
echo "URL is http://www.google.com/$page.$val
done
WYJŚCIE: # najbliżej mogę dostać się do argumentu first -p
./test.sh -p help -p contact -e html -e php
Adres URL to http://www.google.com/help.html
Adres URL to http://www.google.com/help.php
$ man getopt
# jedna drogaextension
tablicy, ale nie popage
tablicy. Czy chcesz łączyć nazwy stron i rozszerzenia jeden do jednego lub jeden do wszystkich? Jeśli po pierwsze - potrzebujeszfor (())
pętli ze zmienną indeksu, aby iterować po obu tablicach. Jeśli drugi - potrzebujesz dwóch zagnieżdżonych pętliOdpowiedzi:
ok, następujące wydają się działać. Dzięki @tso
https://stackoverflow.com/questions/44067504/bash-iterate-multiple-variable-with-for-loop-index
źródło