kshはスペースがある場所でcp操作を実行できませんか?

kshはスペースがある場所でcp操作を実行できませんか?

次のことを試みますが、このコマンドに関するメッセージがksh表示され続けます。cannot statcp

JMX_ROOT=/bfs-build/build-info/mep_mainline-Linux.latest/core/mainline/automation

SMOKE_JMX_LOCATION=$JMX_ROOT/"Smoke Set"/*.*

cp $SMOKE_JMX_LOCATION /var/tmp/tempor

どんなアイデアがありますか?私は成功せずに様々な変数に引用符を入れようとしました。

答え1

cp "$SMOKE_JMX_LOCATION" /var/tmp/tempor
#--^-------------------^

編集:私は本当にワイルドカードに気づいていませんでした。はい、これを参照すると拡張が防止されます。変数に入れる必要がありますか?これは間違いなく動作します:

cp $JMX_ROOT/"Smoke Set"/*.* /var/tmp/tempor

答え2

SMOKE_JMX_LOCATION="$(echo $JMX_ROOT/"Smoke Set"/*.*)"
cp "$SMOKE_JMX_LOCATION" /var/tmp/tempor

答え3

代替フィールド区切り文字を使用して、ディレクトリ名のスペースを解決できます。

JMX_ROOT=/bfs-build/build-info/mep_mainline-Linux.latest/core/mainline/automation

OLD_IFS="$IFS"
IFS=$'\n'

SMOKE_JMX_LOCATION="${JMX_ROOT}/Smoke Set"

cp ${SMOKE_JMX_LOCATION}/*.* /var/tmp/tempor

IFS=$OLD_IFS

関連情報