ksh 无法从有空格的位置进行 cp 操作吗?

ksh 无法从有空格的位置进行 cp 操作吗?

我正在尝试执行以下操作,ksh但不断收到cannot stat该命令的消息cp

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

相关内容