在ksh中包含*的路径变量

时间:2014-07-05 17:49:31

标签: ksh filepath variable-expansion

我正在使用Mac。我有一个名为 1的目录。目录测试

中的(名称中有空格)

现在,以下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

因此,看起来印刷和CD都识别出图案“1. A”但触摸却没有。为什么呢?

1 个答案:

答案 0 :(得分:2)

总是引用您的变量,除非您希望在空格和wilcards上展开扩展。

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

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