【发布时间】:2013-04-13 04:58:13
【问题描述】:
假设我有一个文件 file.txt,其中包含数据(比如“100”)。我想将此文件的内容读入一个变量以供将来处理。我希望它可以在 Linux 和 Solaris 上运行。我该怎么做?
【问题讨论】:
假设我有一个文件 file.txt,其中包含数据(比如“100”)。我想将此文件的内容读入一个变量以供将来处理。我希望它可以在 Linux 和 Solaris 上运行。我该怎么做?
【问题讨论】:
试试这条线:
VAR=$(cat file.txt)
或
VAR=$(head -1 file.txt)
编辑 1:
使用 Unix 命令的输出设置变量
关于 shell 脚本最好的事情之一是它很容易使用任何 Unix 命令来生成输出并使用它来设置变量。
在本例中,我正在运行一个日期命令并将其输出保存为我的变量的值:
#!/bin/sh
#
STARTED=`date`
sleep 5
FINISHED=`date`
#
echo "Script start time: $STARTED"
echo "Script finish time: $FINISHED"
如果我运行这个简单的脚本,我会看到以下内容:
ubuntu$ /tmp/1.sh
Script start time: Wed May 7 04:56:51 CDT 2008
Script finish time: Wed May 7 04:56:56 CDT 2008
几乎所有场景都可以使用相同的方法。
所以 mvp 的答案适用于任何 unix shell:
F=`cat file.txt`
尝试使用反引号 ` 而不是 ' 单引号
【讨论】:
sh 是一个相当老的 shell;它不支持$(...)AFAICR,因此您必须改用var=`...` (注意它们是反引号)。在bash 中,您可以使用var=$(<file.txt),它实际上不会启动子shell。
这应该可行:
VAR=`cat file.txt`
如果您只想获取文件的第一行,请使用:
VAR=`head -1 file.txt`
【讨论】:
'。如果不确定,请复制并粘贴它——它确实有效
您是否尝试过以下方法
VAR=$(<file)
当我需要将两行文件中的第二行作为变量存储在 bash 中时,它起作用了。
【讨论】: