Bashスクリプトのコマンドラインからスペースを含む入力を受け入れる方法

Bashスクリプトのコマンドラインからスペースを含む入力を受け入れる方法

現在、コマンドラインから入力を受け入れるbashスクリプトがありますが、入力にスペースがあり、bashスクリプトはスペースの後の単語を読みません。スクリプトはこれです

#!/bin/bash
var1=$1
var2=$2
echo $var1
echo $var2

このファイルをtest.shとして保存するとします。今私の入力は次のようになります。

./test.sh hi check1,hello world

出力は -

hi
check1,hello

しかし、出力が必要です。

hi
check,hello world

PS:二重引用符で入力を提供できないため、空白の単語を読むための別の解決策が必要です。

ベストアンサー1

それは不可能です。パラメータの単語分割はスクリプトの実行前に発生するため、スクリプトの起動時にパラメータはすでに単語に分割されています。man bash詳しくは「単語分割」をご覧ください。

もしあなたなら知る2つのパラメータがあります。最初のパラメーターにはスペースは含まれません。何とか解決できます。

#! /bin/bash
first=$1
shift
rest="$*"

printf '<%s>\n' "$first" "$rest"

しかし、まだいくつかのスペースを1つに縮小します。

おすすめ記事