現在、コマンドラインから入力を受け入れる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つに縮小します。