入力なしの変数宣言

入力なしの変数宣言

スクリプトで変数を設定するために、シェル履歴から入力を取得できるようにしたいです。その後、ifループでこの変数を使用したいのですが、変数を正しく設定できません。

入力ステップ:初期入力はコマンドラインを介して行われます。ここにいくつかの可能性があります。

-> string
-> string AA
-> string 99

この文字列は、私のスクリプトを実行するエイリアスに関連付けられています。私のスクリプトの主な機能は次のとおりです。

inputsubstring()
{
strings /user/.sh_history | grep '^\string' | tail -1 | cut -d' ' -f2
}

したがって、最初は次のような文字列を取得します。

substring
substring AA
substring 99

関数の最後にcutコマンドを使用しているため、理論的には次のような出力を受け取ります。

AA
99

上記のコマンドで変数を設定すると、英数字の出力を見つけるのに機能しますが、2番目のフィールドを持たない文字列では正しく機能しません。実は設​​定できません。問題のある文字列でスクリプトを実行すると、実際に最後の英数字の値に関する情報がエコーされます。どのように動作させることができますか?

私は次のような別の価値を創造しようとします。

secondvar=${first:-default}

しかし、それはうまくいきませんでした。

また:文字列の長さと変数の代入を試しましたが、うまくいきませんでした。どうすればいいですか?

更新:「文字列」を特定の回数だけ個別にインポートすればよいので、履歴を連結して最後の入力を確認する別の関数を作成しました。

laststring()
{
cat /user/history | tail -1
}

ベストアンサー1

Historyコマンドを使用して、必要なコマンドを検索してその変数を割り当てることができます。

実行しlsて履歴にコマンドが99番で表示されたら、次のように変数に割り当てることができます。

var=!99

おすすめ記事