目标
在ZSH脚本中,对于给定的参数,我想获取第一个字符串和其余字符串。
例如,当脚本被命名时test
sh test hello
应该提取h
和ello
。
ZSH手册
http://zsh.sourceforge.net/Doc/zsh_a4.pdf
说:
也可以对非数组值执行下标,在这种情况下,下标指定要提取的子字符串。例如,如果 FOO 设置为 'foobar',则 'echo $FOO[2,5]' 打印 'ooba'。
第一季度
所以,我在一个名为的文件中编写了一个 shell 脚本test
echo $1
echo $1[1,1]
终端:
$ sh test hello
hello
hello[1,1]
结果失败。代码有什么问题?
第二季度
另外我不知道如何从 n 中提取 subString 到最后一个。也许我必须使用 Array split by regex?
编辑:第三季度
这可能是另一个问题,所以如果启动新线程是合适的,我会这样做。
感谢@skishore 这是进一步的代码
#! /bin/zsh
echo $1
ARG_FIRST=`echo $1 | cut -c1`
ARG_REST=`echo $1 | cut -c2-`
echo ARG_FIRST=$ARG_FIRST
echo ARG_REST=$ARG_REST
if $ARG_FIRST = ""; then
echo nullArgs
else
if $ARG_FIRST = "@"; then
echo @Args
else
echo regularArgs
fi
fi
我不确定如何将字符串值与字符串进行比较,但是对于给定的参数hello
结果:
command not found: h
代码有什么问题?
编辑2:
我发现正确的
#! /bin/zsh
echo $1
ARG_FIRST=`echo $1 | cut -c1`
ARG_REST=`echo $1 | cut -c2-`
echo ARG_FIRST=$ARG_FIRST
echo ARG_REST=$ARG_REST
if [ $ARG_FIRST ]; then
if [ $ARG_FIRST = "@" ]; then
echo @Args
else
echo regularArgs
fi
else
echo nullArgs
fi
编辑3:
作为整体的结果,这就是我对这个问题所做的。
https://github.com/kenokabe/GitSnapShot
GitSnapShot是一个用于 Git 命令的 ZSH 瘦包装器,使用起来更简单