假设在dir.txt
中,我具有以下内容:
test-dir
我尝试将其用作参数,如下所示:
echo dir.txt | cp * $1
我希望以上内容等同于:
cp * test-dir
我在做什么错了?
答案 0 :(得分:1)
您正在将字符串“ dir.txt”提供给不接受标准输入的程序。
您正在寻找以下语法:
cp * "$(<dir.txt)"
$()
在括号内运行该命令,并将其结果替换为其在命令行中的位置。 <
是读取文件的快捷方式(cat
也可以使用)。引号是为了避免空格问题。
答案 1 :(得分:0)
variable=$( cat /path/to/file.ext )
可以用bash编写:
variable=$( < /path/to/file.ext )
这避免了对/bin/cat
命令的无用派生。这是bash功能。
但是您可以使用
read variable < /path/to/file.ext
我喜欢这个,因为它非常易读且功能强大:
read uptime idletime < /proc/uptime
将通过解析$uptime
内核条目来填充两个变量$idletime
和/proc/uptime
。
防止复制到不存在的目录:
read dir < test-dir
if [ -d "$dir" ] ;then
cp -t "$dir" *
fi
-t
的{{1}}参数表示 cp
或创建不存在的目录
target-directory
如果目录已经存在,其中dir=$(<test-dir)
mkdir -p "$dir"
cp -t "$dir" *
的{{1}}参数将跳过错误。
答案 2 :(得分:0)
您可以将文件的内容获取到变量:
sizeof p /sizeof *p
结果:
p