両方のコマンドラインで空白のないファイル名

両方のコマンドラインで空白のないファイル名

2つのLinuxコマンドを実行していますが、2つの値を区切るスペースとドットなしで結果の値をファイル名に入力したいと思います。これまで私はこれを得ました:

pid=`sudo dmidecode -s system-product-name`
vid=`sudo dmidecode -s system-version`
# cleanup spaces in $pid and $vid
filename=$pid.$vid.tar.gz

2つの変数のスペースをクリーンアップする方法は?

答え1

bash "パターン置換"を使用できます(詳細については、その文字列のマニュアルページを検索してください)。

filename=${pid// /}.${vid// /}.tar.gz

デュアルスラッシュはパターン内のすべての項目を置き換えます。二重スラッシュと次のスラッシュの間のスペースはパターンです。置換パターンは最後のスラッシュの後ろに表示されます。この場合は空白です。最後のスラッシュを削除できますが、わかりやすくするためにスペースを含めるので、これを好みます。

答え2

sed を使用できます:

pid=$(sudo dmidecode -s system-product-name | sed 's/  *//g')

関連情報