一个非常简单的shell脚本问题。我有一个这样的文件:Shell脚本 - 将子串保存到变量
var "aaaaa"
var "bbbbb"
...
现在,我怎样才能将字符串中的引号分配给一个变量? 这就是我现在的(但我错过了分配部分...):
while read line
do
echo $line | cut -d" " -f3
done
它打印我想要的东西......我怎么把它保存到一个变量?
谢谢
一个非常简单的shell脚本问题。我有一个这样的文件:Shell脚本 - 将子串保存到变量
var "aaaaa"
var "bbbbb"
...
现在,我怎样才能将字符串中的引号分配给一个变量? 这就是我现在的(但我错过了分配部分...):
while read line
do
echo $line | cut -d" " -f3
done
它打印我想要的东西......我怎么把它保存到一个变量?
谢谢
my_var=$(echo $line | cut -d" " -f3)
您需要执行的命令。这就是$()的用途。
取决于壳。
Bourne和衍生物,你做
my_var_name=expression
C shell和衍生工具,你做
setenv my_var_name expression
如果你想保存一个命令的输出(如“切XYZ “),您使用反引号运算符作为您的表达式:
my_var_name=`echo $line | cut -d" " -f3`
我认为,庆典也支持$(),但不知道从反引号的差别 - 见3.4.5从http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_03_04.html
。 你的意思是这样的:my_var = $ line | cut -d“”-f3 ?似乎没有工作。什么都不打印。 是的,将它们分配给每个循环中的相同变量将会很好。 – pns 2010-03-04 19:39:10
@DVK:为什么'$()'? - http://mywiki.wooledge.org/BashFAQ/082 – 2010-03-05 11:13:27
您不必使用外部剪切命令来“剪切”您的字符串。你可以使用shell,它更高效。
while read -r a b
do
echo "Now variable b is your quoted string and has value: $b"
done <"file"
或者
我使用bashwhile read -r line
do
set -- $line
echo $2
done <"file"
一般来说,你应该引用命令替换和变量扩展来保留空格:'my_var =“$(echo”$ line“| cut -d”“ - F3)“'。该命令已经在空格字符上分割,但保留制表符,换行符或可能在IFS中的任何其他内容也可能很重要。 – 2010-03-04 20:14:23