文字列から部分文字列を抽出する[閉じる]

文字列から部分文字列を抽出する[閉じる]

「2.0.1」と「2.0.12」の文字の前の文字を抽出する必要があります。次の文字列から sgdgfhfh-ZZZZZZ-ZZZ-2.0.1.ZZZ,sgdgfhfh-ZZZZZZ-ZZZ-2.0.12.ZZ :

努力しています:

#!/bin/bash
c=grep -o '[.0-9]*[0-9]' $1 
echo $c 

file$1は埋め込みテキストファイルで、ZZZZZZ-ZZZ-2.0.1.ZZZエラーが発生します。

line 2: -o: command not found

ベストアンサー1

@Archemarが彼の意見で言ったように、あなたの命令は

c=grep -o '[.0-9]*[0-9]' $1

grepまったく実装されていません。変数をコマンド出力に設定する構文は次のとおりです。

c=$(grep -o '[.0-9]*[0-9]' $1)

$(command)このコマンドの出力に置き換えられます。

しかし、なぜこのような奇妙なエラーメッセージが表示されるのですか?コマンドを実行する前に変数の割り当てが有効であるためです。これは、変数がこのコマンドに対してのみ設定されていることを意味します。これは、変数を永久に設定または変更したくない場合に便利です。したがって、あなたの行は、「変数がc文字列に設定され、コマンドがパラメータでgrep実行される必要があるため、-oコマンドは検索されますが見つかりません」と解釈されます。'[.0-9]*[0-9]'$1-o

おすすめ記事