Shell脚本 - 将子字符串保存到变量

时间:2010-03-04 19:32:48

标签: shell scripting

一个非常简单的shell脚本问题。我有一个类似这样的文件:

var "aaaaa"
var "bbbbb"
...

现在,如何将引号中的字符串分配给变量? 这就是我现在所拥有的(但我错过了分配部分......):

while read line
do
  echo $line | cut -d" " -f3
done

打印我想要的...如何将其保存到变量?

由于

3 个答案:

答案 0 :(得分:7)

my_var=$(echo $line | cut -d" " -f3)

您需要执行命令。这就是$()的用途。

答案 1 :(得分:1)

您不必使用外部剪切命令来“剪切”字符串。你可以使用shell,效率更高。

while read -r a b
do
  echo "Now variable b is your quoted string and has value: $b"
done <"file"

或者

while read -r line
do
  set -- $line
  echo $2
done <"file"

答案 2 :(得分:0)

取决于shell。

Bourne和衍生品,你做

my_var_name=expression

C shell和衍生物,你做

setenv my_var_name expression

如果要保存命令的输出(例如“cut xyz”),则使用反引号运算符作为表达式:

my_var_name=`echo $line | cut -d" " -f3`

我认为bash也支持$()但不确定与反引号的区别 - 请参阅http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_03_04.html中的第3.4.5节