Shell脚本:如何从变量中仅读取部分文本
我正在使用ashshell(不是bash)开发一个小脚本 现在我有一个变量,其组成如下: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
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没有。今天早上起作用了。该死的,如果我知道发生了什么。{困惑}