获取字符串SHELL的第一个字符

时间:2015-01-06 02:34:36

标签: linux sh

我想先写一个字符串的第一个字符,例如:

$>./first $foreignKey

我希望得到"$"

我用谷歌搜索了一下,我发现了一些解决方案,但它只涉及bash而不是Sh !

6 个答案:

答案 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手册关于子串处理,这是我的解决方案,不涉及任何subshel​​l / fork

a="some string here" printf 'first char is "%s"\n' "${a%"${a#?}"}"

答案 5 :(得分:-1)

printf -v first_character "%c" "${variable}"