我有一件简单的事情要做,但我是UNIX的新手。 所以,我有一个文件,每行都有一个ID。 我需要浏览文件并将所有ID放入一个变量中。
我尝试过类似Java的东西,但是没有用。
for variable in `cat myFile.txt`
do
param=`echo "${param} ${variable}"`
done
似乎没有将所有值添加到param中。
感谢。
答案 0 :(得分:2)
我会用:
param=$(<myFile.txt)
参数在名称之间有空格(实际上是换行符)。当使用不带引号时,shell会将这些扩展为空格,如:
cat $param
如果与引号一起使用,文件名将保留在单独的行中,如:
echo "$param"
请注意,Korn shell特殊情况下使用“$(<file)
”表示法,并且不会分叉并执行任何命令。
另请注意,您的原创想法可以更简单地工作:
param=
for variable in `cat myFile.txt`
do
param="${param} ${variable}"
done
这在参数的前面引入了一个空白;它很少重要。有趣的是,您可以使用param="${param}${variable} "
在末尾使用一个空格来避免前面的空白。这也可以在不搞乱的情况下工作,尽管它看起来好像是把东西混在一起。此外,“${var}
”符号不是必需的,但它也没有任何害处。
最后,现在最好用'$(cat myFile.txt)
'替换back-tick命令。当您需要嵌套命令时,差异变得至关重要:
perllib=$(dirname $(dirname $(which perl)))/lib
VS
perllib=`dirname \`dirname \\\`which perl\\\`\``/lib
我知道我更喜欢输入(和阅读)!
答案 1 :(得分:0)
试试这个:
param=`cat myFile.txt | tr '\n' ' '`
tr
命令tr
将所有出现的\n
(换行符号)转换为空格。然后我们将结果分配给param变量。
可爱。
答案 2 :(得分:0)
AWK
var=$(awk '1' ORS=" " file)
ksh的
while read -r line
do
t="$t $line"
done < file
echo $t
答案 3 :(得分:0)
param="$(< myFile.txt)"
或
while read line
do
param="$param$line"$'\n'
done < myFile.txt