rh6ksh93
我很难获得kornshell脚本执行命令。以下两个var在两个命令之间是恒定的
GLOBAL_CAT=/a/path/to/a/dir
DATA=/a/data/file.txt
cmd 1: m_cat_add -catalog $ global_cat -data $ data -key'{akey1}'
cmd 2: m_cat_add -catalog $ global_cat -data $ data -key'{akey1;akey2}'
请密切注意封闭括号的单引号,并向分离两个键值
的分号CMD1和CMD2从键盘进行交互式输入时都可以工作m_cat命令要求单价
包含-key的值现在我搅动一个方便的kornshell脚本:
GLOBAL_CAT=/a/path/to/a/dir
DATA=/a/data/file.txt
KEYY="{aKey1}"
CMDSTR="m_cat -catalog ${GLOBAL_CAT} -data ${DATA} -key '${KEYY}'"
`eval "$CMDSTR"` # works
KEYY="{aKey1; aKey2}"
CMDSTR="m_cat -catalog ${GLOBAL_CAT} -data ${DATA} -key '${KEYY}'"
`eval "$CMDSTR"` # m_cat throws a "usage" errmsg
因此,在出现那个半龙时,发生了一些微妙而辛辣m_cat命令。
在现实世界中,我的脚本在段落中从文件中读取三个var,所以我不能只是手工编辑keyy
有什么想法吗?后斜线?以某种方式强迫字面上的?
tia,
仍在学习的史蒂夫
事实证明,半隆是字符的默认情况下,隐式解析发生在可变扩展期间。所以用
KEYY="{aKey1; aKey2}"
CMDSTR变为
m_cat -catlog foobar -data bohica '{aKey
由于无与伦比的单引号而不能成为有效的命令。解决方案是将IF设置为我所知道的角色,永远不会在字符串中
IFS='<'
那做了这个技巧。感谢所有回答!
仍在学习的史蒂夫