我必须使用 ksh88 提取子字符串。(顺便说一句,找到 ksh 版本的简单方法$KSH_VERSION对我不起作用。我不得不使用
[ "`echo "\c" | grep c`" ] && echo ksh93 || echo ksh88
Run Code Online (Sandbox Code Playgroud)
我尝试使用命令echo ${stringvariable : 2: 2}但它说bad substitution。我是 Unix 世界的新手。这是我为得到结果所做的:
我已经使用 PUTTY 登录到 Unix 并输入了上面的命令。我也先尝试了 ksh 命令,然后是我的命令,但仍然没有成功。有什么我做错了吗?
另外,如果我想要从位置 2 开始直到结束的子字符串怎么做?
空格在 shell 中很重要。你应该使用
$ stringvariable="foobar"
$ echo ${stringvariable:2:2}
ob
Run Code Online (Sandbox Code Playgroud)
注意:这适用于ksh93,它不适用于ksh88。
如果您的单词以空格分隔,则可以使用set:
$ stringvariable="foo bar baz zap"
$ set -- $stringvariable
$ echo $3
baz
Run Code Online (Sandbox Code Playgroud)
这应该总是比无用的cut. 使用cut获取字符串中的字符的编程相当于使用 40 吨卡车购买和运输一块方糖。