下付き文字で実行されるスクリプトには説明できない問題があるようです。まだ解決策を見つけることができないので、助けてみましょう。
問題:スクリプト内でスクリプトを実行すると、デフォルトのシェルでスクリプトを実行したときに発生しない特定の欠陥が発生します。
# ./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"
問題を解決しました。