Bash 脚本 `function` 怎样捕获带空格的参数?

比如写一个Bash函数,创建并进入一个目录newdirfirst-demo/,用alias无法完成的,
可如果我用的是$1进行传参mkdir$1&&cd$1,像newdirsecond\demo/就会出错,
结果是创建两个目录,进入到空格前的名字对应的目录.
请问怎样能解决这个问题?
开心每一天1111
浏览 318回答 2
2回答

慕神8447489

对bash编程不熟,说个无关的,我认为更广泛的原则是,对于shell有特殊含义的字符,在使用的时候还是应该用引号,这应该是shell通用的原则。mkdir'lolomg'

猛跑小猪

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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript