请问如何将[ab]原封不动的传给Shell脚本?
这样一个叫s.sh的脚本:
#! /bin/ksh
echo $1
怎样才能让它的输出结果为[ab]?
试过了下面这些都不行:
./s.sh [ab]
./s.sh \[ab]
./s.sh '[ab]'
./s.sh '\[ab]'
结果不是a就是\[ab]。
求高手指点!
------解决方案--------------------./s.sh "[ab]"
记住,shell解析命令前将转义一次""或者不带""的部分, 将不转义''包裹的部分,另外,[]这些符号影响命令解析,必须"",''包裹,具体转义问题自己考虑。
------解决方案--------------------你确定?
我bashshell没这个毛病,通配符和正则都是程序解析的,不是shell解析的。
------解决方案--------------------LZ估计是solaris系统,用了ksh,跟bash有点不一样
多试试转义之类的方法吧
------解决方案--------------------\[ab\]
------解决方案--------------------centos用/bin/bash,毫无问题啊,我不试验一下是不会回复你的。
C/C++ code
[User:root Time:18:43:13 Path:/home/liangdong/shell]$ cat test.sh
#!/bin/sh
echo $1;
[User:root Time:18:43:15 Path:/home/liangdong/shell]$ ./test.sh [ab]
[ab]
[User:root Time:18:43:19 Path:/home/liangdong/shell]$
------解决方案--------------------
$ cat cmd.ksh
#!/bin/ksh
print $1;
$ ./cmd.ksh "[ab]"
[ab]
$
------解决方案--------------------
貌似所有情况都行啊:
Perl code
zhu@ubuntu:~/sed$ cat cmd.ksh
#!/bin/ksh
echo $1;
zhu@ubuntu:~/sed$ ./cmd.ksh [ab]
[ab]
zhu@ubuntu:~/sed$ ./cmd.ksh '[ab]'
[ab]
zhu@ubuntu:~/sed$ ./cmd.ksh "[ab]"
[ab]
zhu@ubuntu:~/sed$ uname -a
Linux ubuntu 3.2.0-24-generic #39-Ubuntu SMP Mon May 21 16:52:17 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
zhu@ubuntu:~/sed$ dpkg -l|grep ksh
ii ksh 93u-1 The real, AT&T version of the Korn shell
zhu@ubuntu:~/sed$
------解决方案--------------------
------解决方案--------------------
虽然你执行时参数使用了引号,但是你脚本中的输出语句是echo $1,其中的$1是没有引号的
你可以改为这样看看
echo "$1"
这样,./s.sh '[ab]'
就会输出[ab]了
不管你当前目录下有没有a或b文件