スクリプト内で Bash 実行スクリプトが原因でエコーと読み取りの問題が発生しました[閉じる]

スクリプト内で Bash 実行スクリプトが原因でエコーと読み取りの問題が発生しました[閉じる]

下付き文字で実行されるスクリプトには説明できない問題があるようです。まだ解決策を見つけることができないので、助けてみましょう。

問題:スクリプト内でスクリプトを実行すると、デフォルトのシェルでスクリプトを実行したときに発生しない特定の欠陥が発生します。

# ./user

発生する問題は、\n および "-e"、"-n" が指定されているか何も指定されていない場合でも、すべての "echo" ステートメントが同じ行に印刷されることです。もう1つの主な問題は、コードの「読み取り」ステートメントが、デバッグされたコードで添え字内で最後に実行されるものの1つである場合、実際には他のすべての前に実行されることです。

以下はメインスクリプトで実行されるコードです。

    #!/bin/bash

#Frame
. "/uhost/admin/uhost_files/UHU_FRAME.source"
. "/uhost/admin/uhost_files/UHU_DIR_EXECUTE.source"

arr_uhu_arg=("$@")
command_get="$1"

function Help () {
    echo -e -n "Allows creation, edition, and locking of user accounts stored on the UH2 system.\n"
    echo -e -n "Takes the following arguments: ${lblue} add lock del${nc}\n"
    echo -e -n "Can add, lock, and delete UNIX user accounts from the UH2 system.\n"
}

function Start () {
    if [[ " ${arr_uhu_arg[*]} " == *" add "* ]]; then
        echo "===== USER ADD ====="
        echo "Username: "
        read uhost_username
    fi
}

if [[ "$command_get" == "init_help" ]]; then
    Help # Runs Help function when used by the help command
else
    Start # Runs the main command's function
fi

これらのスクリプトは、基本スクリプトの行を通して呼び出されます。

echo `/bin/bash ${UHU_DIR_EXECUTE}/com/$uhu_sepcommand "$uhu_sepcommand_arg1" "$uhu_sepcommand_arg2"`

「$uhu_sepcommand」は、パラメータが続くスクリプトファイルです。

その部分

if [[ " ${arr_uhu_arg[*]} " == *" add "* ]]; then
        echo "===== USER ADD ====="
        echo "Username: "
        read uhost_username
    fi

2つの「echo」ステートメントは1行に表示され、「read」ステートメントは他のすべてのステートメントの前に実行されるようです。

エラーは、基本スクリプト内でスクリプトを実行した場合にのみ発生します。

GNU bash バージョン 4.2.37(1) リリース (i486-pc-linux-gnu) の使用

Debian GNU/Linux 7.7

編集#1

Gilesのコメントは実際に私の質問に対する答えでした。添え字はすべて一緒に蓄積され、「ブロック」として出力されます。明確に言えば、出力が作成された内容と一致せず、不正確であることは欠陥です。変化

echo `/bin/bash ${UHU_DIR_EXECUTE}/com/$uhu_sepcommand "$uhu_sepcommand_arg1" "$uhu_sepcommand_arg2"`

到着

/bin/bash ${UHU_DIR_EXECUTE}/com/$uhu_sepcommand "$uhu_sepcommand_arg1" "$uhu_sepcommand_arg2"

問題を解決しました。

関連情報