我有一个包含随时间更新的数据的文件(mydata)。该文件如下所示:
1 2 3
对于这个文件,我想这样做(基本上将每个数字作为一个单独的参数来处理):
myscript.sh 1 2 3
由于数据不是静态的而是随着时间的推移而更新的,所以我想运行以下命令:
myscript.sh "$(cat mydata)"
但是相反,我看到了./myscript.sh:第1行:1:未找到命令
我该怎么办?
"$(cat mydata)"
计算结果为一个字符串,其中包含文件的内容mydata
减去任何结尾的换行符。您需要的是文件中用空格分隔的单词的列表。因此,一次,请在双引号之外使用命令替换:
myscript.sh $(cat mydata)
为了增强鲁棒性,请关闭globbing,以便如果其中的一列mydata
包含一个字符\[*?
,则不会将其解释为文件名模式。您可能还希望设置IFS
为包含单词分隔符,但是默认值(ASCII空格)应该恰好是您所需要的。
(set -f; myscript.sh $(cat mydata))
或者,您可以使用read
内置函数。这将读取第一行,而忽略其余的行(您可以通过替换cat
为来完成上述操作head -n 1
)。
read -r one two three rest <mydata
myscript.sh "$one" "$two" "$three"
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句