בעיה בהרצה של while getopts

  • פותח הנושא BMWE
  • פורסם בתאריך

BMWE

New member
בעיה בהרצה של while getopts

שלום,

יש לי אוסף קבצים אשר אמורים להריץ התקנה מסויימת ע"י סקריפטי BASH.
באחד הקבצים ההתקנה נכשלת בגלל בעיה של קריאת פרמטרים.

#!/bin/bash<some functions and additional parameter declaration>
# Parse command line argumentswhile getopts a:c:i:n:p:s:u:w:h argdo case $arg in a) IP_ADDRS[${NUM_IP_ADDR}]=$OPTARG NUM_IP_ADDR=$(( NUM_IP_ADDR + 1 )) ;; c) PC=$OPTARG ;; i) SDF_ID=$OPTARG ;; n) NAME=$OPTARG ;; p) PHASE=$OPTARG ;; s) STACK_TYPE=$OPTARG ;; u) APP_SSNS[${NUM_APP_SSNS}]=$OPTARG NUM_APP_SSNS=$(( NUM_APP_SSNS + 1 )) ;; w) PASSWD=$OPTARG ;; h) usage ;; ?) usage ;; \?) echo "Invalid option: -$OPTARG" usage ;; :) echo "Option -$OPTARG requires and argument" usage ;; esacdone<some additional calls>
הקריאה לקובץ זה מבוצעת מקובץ אחר עם אוסף פרמטרים הבא:
-p install -s ITU -w pass -i 4 -c 9455 -n test101 -u 9 -a 1.1.1.1 -a 1.1.1.2
ניסיתי לקחת את הקובץ ולהריץ אותו ב cygwin ובמוד debug לראות מה קורה בקטע קוד הנ"ל, אבל הפלט היחידי שאני רואה זה רק את
getopts a:c:i:n:p:s:u:w:h arg
לאחר מכן הוא קופץ לפקודה הבאה שמדיעה אחרי לולאת ה while.

אשמח לעזרה מה חסר פה.
תודה
 

Expect

New member
היי

לקחתי את הקוד שלך וחתכתי דברים מסויימים כדי שהוא רק ידפיס את הפרמטר שהוא מקבל בשורת הפקודה - וזה עבד כמו שצריך אצלי.
תוכל לתת קצת יותר פרטים לגבי הבעיה? מה אתה מצפה לקבל ומה אתה מקבל בפועל? קצת קשה לי להבין.
 

BMWE

New member
עושה רושם שהתוכן של ה while לא מבוצע כלל.

כאשר אחרי ה do אני מכניא echo test אני אפילו את זה לא רואה.
&nbsp
אשמח לדעת מה חתכת ובדקת שעובד.
 

Expect

New member
זה מה שיוצא אצלי

#!/bin/bash
# Parse command line arguments
usage(){ echo USAGE}while getopts a:c:i:n:p:s:u:w:h argdo case $arg in a) echo PARAM a $OPTARG ;; c) echo PARAM c $OPTARG ;; i) echo PARAM i $OPTARG ;; n) echo PARAM n $OPTARG ;; p) echo PARAM p $OPTARG ;; s) echo PARAM s $OPTARG ;; u) echo PARAM u $OPTARG ;; w) echo PARAM w $OPTARG ;; h) usage ;; ?) usage ;; \?) echo "Invalid option: -$OPTARG" usage ;; :) echo "Option -$OPTARG requires and argument" usage ;; esacdone[root@installercf101 ~]# bash t.sh -a HELLO -c THERE -i THIS -n IS -p A -s TEST -u FOR -w YOUPARAM a HELLOPARAM c THEREPARAM i THISPARAM n ISPARAM p APARAM s TESTPARAM u FORPARAM w YOU
 

Expect

New member
תתן (אם אפשר) את כל תוכן הסקריפט

כמו שהוא אצלך כדי שאריץ אותו ואדבג איתך.
 

BMWE

New member
לא יודע למה זה לא עבד אצלי על המחשב ב cygwin

כאשר הרצתי את אוסף הסקיפרטים מחדש על מכונת הייצור, החלק הבעייתי עבד כמו שצריך. מסתבר שאחד הפרמרטים לא הועבר כמו שצריך (היה ריק).
 
למעלה