我想先写一个字符串的第一个字符,例如:
$>./first $foreignKey
我希望得到"$"
我用谷歌搜索了一下,我发现了一些解决方案,但它只涉及bash而不是Sh !
答案 0 :(得分:5)
好吧,您可能需要转义特定的值以防止它被解释为shell变量但是,如果您无法访问漂亮的bash
子字符串工具,你仍然可以使用类似的东西:
name=paxdiablo
firstchar=`echo $name | cut -c1-1`
如果你做有bash
(它在大多数Linux发行版上都可用,即使你的登录shell不是bash
,你也应该可以用它运行脚本),这更容易:
firstchar=${name:0:1}
为了逃避该值以使其不被shell解释,您需要使用:
./first \$foreignKey
以及以下first
脚本显示了如何获取它:
letter=`echo $1 | cut -c1-1`
echo ".$letter."
答案 1 :(得分:3)
你可以试试这个:
s='hello'; echo ${s:0:1}
h
答案 2 :(得分:3)
这适用于任何与Posix兼容的shell(包括sh
)。 printf
不需要是内置的,但通常是,所以这可能会节省一两个分支:
first_letter=$(printf %.1s "$1")
答案 3 :(得分:0)
尝试此命令
echo "$foreignKey"|awk '{print substr($0,1,1);exit}'
答案 4 :(得分:0)
也许这是一个老问题。 最近我遇到了同样的问题,根据POSIX shell手册关于子串处理,这是我的解决方案,不涉及任何subshell / fork
a="some string here"
printf 'first char is "%s"\n' "${a%"${a#?}"}"
答案 5 :(得分:-1)
printf -v first_character "%c" "${variable}"