端末でコマンドを実行できますが、F5 Big IP CLI自己生成ファイルスクリプトが機能しないのはなぜですか?

端末でコマンドを実行できますが、F5 Big IP CLI自己生成ファイルスクリプトが機能しないのはなぜですか?

以下は、f5cliとchmod + x f5cliの実行可能ファイルとして保存されたスクリプトです。 F5FPC_HOST環境変数を使用してホストURL値を選択します。

#!/bin/sh

user=$(echo "" | dmenu -p "Enter user:")
secret="'$(echo "" | dmenu -P -p  "Enter secret(PIN, OTP, Password):")'"

f5fpc --start -u $user -p $secret -t $F5FPC_HOST

変数値の置換は問題にならず、echo/notify-sendにデータを出力して確認しました。 bin/shをbin/zshまたはbin/bashに変更してみました。

端末で実行するコマンド

f5fpc --start -u user -p 'XXXX123456PASSWORD' -t https://abc.com

答え1

次のことができます。

user="$(printf "" | dmenu -p "Enter user:")"
pass="$(printf "" | dmenu -P -p "Enter secret(PIN, OTP, Password):")"

f5fpc --start -u "$user" -p "$pass" -t "$F5FPC_HOST"

printf ""dmenuがstdinをリストとして読むのを防ぐために使用されます。echo改行文字が追加され、空のdmenuリスト項目として扱われます。

他にも、f5fpcargvのパスワードを上書きしてください。たとえば、パスワードが渡されないようにする必要がありますps

f5fpcこの場合、シェルでスクリプトを開き、パスワードを入力するのが最善です。

答え2

修正してください。ありがとうムル引用の問題を指摘します。

#!/bin/sh

user=$(echo "" | dmenu -p "Enter user:")
secret="$(echo "" | dmenu -p  "Enter secret(PIN, OTP, Password):")"

cmd="f5fpc --start -u $user -p '$secret' -t $F5FPC_HOST"

eval "$cmd"

関連情報