比如写一个Bash函数,创建并进入一个目录newdirfirst-demo/,用alias无法完成的,可如果我用的是$1进行传参mkdir$1&&cd$1,像newdirsecond\demo/就会出错,结果是创建两个目录,进入到空格前的名字对应的目录.请问怎样能解决这个问题?
2 回答
慕神8447489
TA贡献1780条经验 获得超1个赞
对bash编程不熟,说个无关的,我认为更广泛的原则是,对于shell有特殊含义的字符,在使用的时候还是应该用引号,这应该是shell通用的原则。mkdir'lolomg'
猛跑小猪
TA贡献1858条经验 获得超8个赞
shell有特殊含义的字符,在使用的时候还是应该用引号,这应该是shell通用的原则不过要补充几点:对于你上面的创建并进入一个目录的脚本来说,mkdir$1并不能创建目录seconddemo/,因为Shell传递给脚本的$1是seconddemo,于是mkdir$1相当于mkdirseconddemo,会创建两个目录。所以需要使用双引号,即:mkdir"$1".用./newdir执行脚本时,Shell会fork一个子进程并调用exec执行这个脚本,因此cd..命令改变的是子Shell的PWD,而不会影响到交互式Shell的pwd。如果想在当前shell进程执行脚本,可以使用.或者source命令。脚本如下:mkdir"$1"&&cd"$1"用source或者.执行结果:$pwd/home/user/etc$source./a.sh'newdir'$pwd/home/user/etc/newdir
添加回答
举报
0/150
提交
取消