1

我正在使用 Mac。我有一个名为 1 的目录。目录Test内的A(名称中有空格)

现在,下面的 ksh 脚本

typeset MyPath=1.* 
print $MyPath 
cd $MyPath 
pwd 
cd .. 
touch $MyPath/File.txt

生产

1. A
Test/1. A
touch: 1.*/File.txt: No such file or directory

因此看起来 print 和 cd 都可以识别模式“1.A”,但 touch 不能。为什么?

4

1 回答 1

2

除非您希望将扩展拆分为空格和通配符,否则请始终引用您的变量。

MyPath=$(IFS= echo 1.*)
print "$MyPath"
cd "$MyPath"
pwd
cd ..
touch "$MyPath/File.txt"

echo 1.*扩展通配符。该赋值IFS=通过清除字段分隔符变量来禁用分词(如果名称有多个连续空格,则需要这样做,否则它们将被合并)。

于 2014-07-05T17:52:13.937 回答