Shell脚本:如何从变量中仅读取部分文本

Shell脚本:如何从变量中仅读取部分文本,shell,ash,Shell,Ash,我正在使用ashshell(不是bash)开发一个小脚本 现在我有一个变量,其组成如下: VARIABLE = "number string status" 其中number可以是任何数字(实际上介于1和18之间,但将来该数字可能会更高),字符串是名称,状态为or on或off 名称通常只有小写字母 现在我的问题是只读取变量中的字符串内容,删除数字和状态 我怎样才能得到它呢?使用cut怎么样 name=$(echo "$variable" | cut -d " " -f 2) 更新 显然,A

我正在使用ashshell(不是bash)开发一个小脚本

现在我有一个变量,其组成如下:

VARIABLE = "number string status"
其中number可以是任何数字(实际上介于1和18之间,但将来该数字可能会更高),字符串是名称,状态为or on或off 名称通常只有小写字母

现在我的问题是只读取变量中的字符串内容,删除数字和状态


我怎样才能得到它呢?

使用
cut
怎么样

name=$(echo "$variable" | cut -d " " -f 2)
更新

显然,Ash不理解
$(…)
。希望您可以这样做:

name=`echo "$variable" | cut -d " " -f 2`

使用
cut
怎么样

name=$(echo "$variable" | cut -d " " -f 2)
更新

显然,Ash不理解
$(…)
。希望您可以这样做:

name=`echo "$variable" | cut -d " " -f 2`

两种方式;一种是利用
$IFS
并使用while循环-这将非常适合于一行,如下所示:

echo "Part1 Part2 Part3" | while read a b c
do
    echo $a
done
或者,使用
cut
,如下所示:

a=`echo $var | cut -d' ' -f2`
echo $a

两种方式;一种是利用
$IFS
并使用while循环-这将非常适合于一行,如下所示:

echo "Part1 Part2 Part3" | while read a b c
do
    echo $a
done
或者,使用
cut
,如下所示:

a=`echo $var | cut -d' ' -f2`
echo $a
那么:

name=$(echo "$variable" | awk '{print $2}')
那么:

name=$(echo "$variable" | awk '{print $2}')

$(…)不为ash所知。他们需要使用反勾号。你确定@ChrisJ吗?我检查了一下,它确实声明
ash
支持
命令替换
。我可以发誓我昨晚尝试了这个,但是
$(…)
抛出了一个错误,而backticks没有。今天早上起作用了。该死的,如果我知道发生了什么。{fuzzed}$(…)对ash来说是未知的。他们需要使用反勾号。你确定@ChrisJ吗?我检查了一下,它确实声明
ash
支持
命令替换
。我可以发誓我昨晚尝试了这个,但是
$(…)
抛出了一个错误,而backticks没有。今天早上起作用了。该死的,如果我知道发生了什么。{困惑}