עזרה בתיקון קטע קוד BASH
-
תיקון קוד YML לגיטאהב
אני לא יודע מה השפה האמיתי שהקובץ נכתב בא לכן אינני מציין את שם השפה
כפי הנראה הקוד הוא BASH
הקטע לתיקון הוא זהif [[ "$release_t" = "retail" ]]; then name3="-retail" if [[ "$release_t" = "release preview" ]]; then name3=-"release-preview" if [[ "$release_t" = "insider slow" ]]; then name3="-insider-slow" if [[ "$release_t" = "insider fast" ]]; then name3="-insider-fast" fi
הוא משולב בקטע הבא
- name: Generate artifact name run: | variant="${{ github.event.inputs.gapps_variant }}" release_t="${{ github.event.inputs.release_type }}" root="${{ github.event.inputs.root_sol }}" if [[ "$root" = "none" ]]; then name1="" elif [[ "$root" = "" ]]; then name1="-with-magisk" else name1="-with-${root}" fi if [[ "$variant" = "none" || "$variant" = "" ]]; then name2="-NoGApps" else name2="-GApps-${variant}" fi if [[ "$release_t" = "retail" ]]; then name3="-retail" if [[ "$release_t" = "release preview" ]]; then name3=-"release-preview" if [[ "$release_t" = "insider slow" ]]; then name3="-insider-slow" if [[ "$release_t" = "insider fast" ]]; then name3="-insider-fast" fi echo "artifact_name=WSA${name1}${name2}_${{ env.WSA_VER }}_${{ matrix.arch }}_${{ env.WSA_REL }}_${name3}" >> $GITHUB_ENV
המקור לפני ההוספה שלי הוא זה
- name: Generate artifact name run: | variant="${{ github.event.inputs.gapps_variant }}" root="${{ github.event.inputs.root_sol }}" if [[ "$root" = "none" ]]; then name1="" elif [[ "$root" = "" ]]; then name1="-with-magisk" else name1="-with-${root}" fi if [[ "$variant" = "none" || "$variant" = "" ]]; then name2="-NoGApps" else name2="-GApps-${variant}" fi echo "artifact_name=WSA${name1}${name2}_${{ env.WSA_VER }}_${{ matrix.arch }}_${{ env.WSA_REL }}" >> $GITHUB_ENV
הקטע שממנו אמור לשאוב את המשתנה הוא הקטע הבא
release_type: description: "WSA release type" required: true default: "retail" type: choice options: - retail - release preview - insider slow - insider fast magisk_apk: description: "Magisk version" required: true default: "stable" type: choice options: - stable - beta - canary gapps_variant: description: "Variants of gapps" required: true default: "none" type: choice options: - none - super - stock - full - mini - micro - nano - pico - tvstock - tvmini root_sol: description: "Root solution" required: true default: "magisk" type: choice options: - magisk - none
השגיאה היא זאת
Run variant="" variant="" release_t="" root="" if [[ "$root" = "none" ]]; then name1="" elif [[ "$root" = "" ]]; then name1="-with-magisk" else name1="-with-${root}" fi if [[ "$variant" = "none" || "$variant" = "" ]]; then name2="-NoGApps" else name2="-GApps-${variant}" fi if [[ "$release_t" = "retail" ]]; then name3="-retail" if [[ "$release_t" = "release preview" ]]; then name3=-"release-preview" if [[ "$release_t" = "insider slow" ]]; then name3="-insider-slow" if [[ "$release_t" = "insider fast" ]]; then name3="-insider-fast" fi echo "artifact_name=WSA${name1}${name2}_2203.40000.1.0_x64_Release-Nightly_${name3}" >> $GITHUB_ENV shell: /usr/bin/bash -e {0} env: WSA_VER: 2203.40000.1.0 WSA_REL: Release-Nightly /home/runner/work/_temp/e34e0132-ac61-4067-8e7e-15f7ebb72607.sh: line 26: syntax error: unexpected end of file Error: Process completed with exit code 2.
-
@A0533057932 זה לא פייתון, זה באש BASH,
והשגיאה דיי פשוטה בסינטקס של התנאים שהכנסת.
תסתכל איך צריך לכתוב בלוק נכון של if.
אין כזה דבר רצף של כמה if באותו סטייטמנט. חובה לכתוב מייד בסוף ה-if סגירה לסטייטמנט (fi) ואז תוכל להמשיך לכתוב עוד בלוק וכו' -
@chv אמר בעזרה בתיקון קטע קוד (כנראה פייתון):
@A0533057932 זה לא פייתון, זה באש BASH,
והשגיאה דיי פשוטה בסינטקס של התנאים שהכנסת.
תסתכל איך צריך לכתוב בלוק נכון של if.
אין כזה דבר רצף של כמה if באותו סטייטמנט. חובה לכתוב מייד בסוף ה-if סגירה לסטייטמנט (fi) ואז תוכל להמשיך לכתוב עוד בלוק וכו'כוונתך לכתוב כך?
if [[ "$release_t" = "retail" ]]; then name3="-retail" elif [[ "$release_t" = "release preview" ]]; then name3=-"release-preview" elif [[ "$release_t" = "insider slow" ]]; then name3="-insider-slow" else [[ "$release_t" = "insider fast" ]]; name3="-insider-fast" fi
-
@A0533057932 אמר בעזרה בתיקון קטע קוד BASH:
כוונתך לכתוב כך?
if [[ "$release_t" = "retail" ]]; then name3="-retail" elif [[ "$release_t" = "release preview" ]]; then name3=-"release-preview" elif [[ "$release_t" = "insider slow" ]]; then name3="-insider-slow" else [[ "$release_t" = "insider fast" ]]; name3="-insider-fast" fi
בהתחלה התבלבלתי, חשבתי לכתוב לך - לא, כי אז חלק מהתנאים בכלל לא ירוצו, כי הם
elif
היינוelse - if
כלומר רק אם התנאי שמקודם לא התקיים, אזי תתחיל תנאי נוסףif
(מקווה שאני מובן).
כי לא הבהרת שאתה כן רוצה לעשות תנאי שירוץ רק אם תנאי שלפניו לא התקיים.עכשיו הסתכלתי בקוד שלך ומשם הבנתי שזו הסיטואציה.
בכל אופן יש לך טעות בסוף, אתה צריך גם שם לעשות עוד
elif
עםthen
אחרי התנאי.
בקיצור:if [[ "$release_t" = "retail" ]]; then name3="-retail" elif [[ "$release_t" = "release preview" ]]; then name3="-release-preview" elif [[ "$release_t" = "insider slow" ]]; then name3="-insider-slow" elif [[ "$release_t" = "insider fast" ]]; then name3="-insider-fast" fi
(תיקנתי לך גם typo בשורה הרביעית, המינוס יצא לך מהגרשיים)