スクリプトで変数を設定するために、シェル履歴から入力を取得できるようにしたいです。その後、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